Concurrency resources

6

I had a fun day today doing a private talk at the CME Group in Chicago. They were kind enough to invite me up to do a talk on concurrency and Terracotta and a smaller breakout session. There were a lot of good questions during the talk and some interesting discussions afterwards, so it was a day full of concurrency.

One question asked was about things to watch in concurrency to leverage multi-core technology. I figured I would just make a blog here for what I’m watching. Probably most direct is that I maintain a concurrency link blog, which is frequently updated with new concurrency information.

In Java, I’m watching all the JSR 166y changes for Java 7, including the most prominent new fork/join package. Other interesting items include the Phaser and Fences classes and the new G1 garbage collector.

In other languages, I’m doing a lot of external study on Erlang, Scala, and Clojure – probably the big 3 languages that are really trying to tackle concurrency head-on. I’ve also been doing some reading on the background behind the agent model with stuff like Hoare’s original Coordinating Synchronous Processes book and some of Haller and Odersky’s actor papers. I’ll be doing a talk on actors at CodeMash in January.

The other big area that lots of folks are exploring is Software Transactional Memory (STM). Clojure uses an STM and seems like lots of folks are exploring it right now as a technique.

Hope those are some good points to start!

Comments

6 Responses to “Concurrency resources”
  1. I think it’s worth pointing out that the C++ community is also tackling concurrency head-on. In the upcoming C++0x standard there is support for multithreading, both at the language level, and in the library (I have an implementation of the C++0x thread library in beta). Also, Microsoft are planning to ship a new concurrency runtime with their VS2010 compiler (you can try it out in the CTP released at PDC 2008), and other compiler vendors are planning similar libraries.

  2. Alex says:

    Right on. I’ve included a lot of C++0x links in the link blog and there is a lot of great stuff going on there. I guess maybe I’m interested most in the 3 languages I mentioned because they are trying to tackle concurrency in ways different than what we have in Java (and C++). I’m not sure those ways are better but I’m interested in any approach that may give us a better way to approach concurrency.

  3. You’re also missing Haskell from that list. It has a great STM implementation, along with Nested Data Parallelism and semi-explicit parallelism using annotations.

  4. Yogesh Sinha says:

    I am also interested in Erlang. The folks who developed it achieved 9 nines of reliability in Ericsson telecom switch. In Java the whole concept of shared memory/state makes difficult to manage concurrency.

  5. Alex says:

    @Yogesh: I believe what I’ve heard from interviews with Joe is that the 9 nines is an anecdotal account of a single switch, so let’s not blow that out of proportion. Which is not to say that Erlang hasn’t forged new ground in building systems that can be upgraded in place and deal with errors and build systems where it’s possible for such things to happen.

  6. Shane says:

    Lucky!! Did you get to see the S&P 500 pit? That’s where the big dogs hang out.

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!