“We can all agree that concurrency is a problem. Not really a problem as in “lets get rid of it”, but more the type of problem that really smart people spend their entire lives trying to solve. Over the years, many different solutions have been proposed, some of them low-level, some more abstract. However, despite their differences, a common thread runs through all of these ideas: each of them attempts to ease the pain of decomposing operations in a re-orderable fashion.
Surprisingly, the word “ordering” is not often heard in conjunction with parallelism. Most of the time, people are thinking in terms of server/client or broker/investor. If you really deconstruct the issue though, there is actually a deeper question underlying all concurrency: what operations do not depend upon each other in a sequential fashion? As soon as we identify these critical operations, we’re one step closer to being able to effectively optimize a particular algorithm with respect to asynchronous processing.”


