Performance of concurrent software on multicore processors
- by Giorgio
Recently I have often read that, since the trend is to build processors with multiple cores, it will be increasingly important to have programming languages
that support concurrent programming in order to better exploit the parallelism offered by these processors.
In this respect, certain programming paradigms or models are considered well-suited for writing robust concurrent software:
Functional programming languages, e.g. Haskell, Scala, etc.
The actor model: Erlang, but also available for Scala / Java (Akka), C++ (Theron, Casablanca, ...), and other programming languages.
My questions:
What is the state of the art regarding the development of concurrent applications (e.g. using multi-threading) using the above languages / models? Is this area still being explored or are there well-established practices already?
Will it be more complex to program applications with a higher level of concurrency, or is it just a matter of learning new paradigms and practices?
How does the performance of highly concurrent software compare to the performance of more traditional software when executed on multiple core processors?
For example, has anyone implemented a desktop application using C++ / Theron, or Java / Akka? Was there a boost in performance on a multiple core processor due to higher parallelism?