Issue No.05 - September/October (2007 vol.11)
Steve Vinoski , Verivue
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/MIC.2007.104
Have you ever devised what you thought was a good solution to a really difficult problem, only to find that the answer would've been almost trivial with a different tool or approach? One of the primary reasons concurrency is so hard is that popular imperative programming languages such as Java and C++ essentially require state to be shared among threads. With multiple threads running on multiple CPUs, more than one program pathway can be active simultaneously, and without the appropriate safeguards in place, the threads can read partial values and overwrite each other's data, resulting in bogus values and application instability. One way to avoid the problems with shared state is to simply avoid it, but that's impractical in a language like C++ or Java. A better way to avoid shared state is to switch to a programming language specifically designed to do exactly that. Erlang is one such language.
Erlang, programming language, middleware, concurrency, Toward Integration
Steve Vinoski, "Concurrency with Erlang", IEEE Internet Computing, vol.11, no. 5, pp. 90-93, September/October 2007, doi:10.1109/MIC.2007.104