views:

313

answers:

4

Have had to write my first "proper" multithreaded coded recently, and realised just how little I knew about how "imperative-style" (ie, concurrency models used by C++/C#/Java, and the like) concurrent programming techniques.

What resources are there (both books and online tutorials, etc) in order to learn more about this area of coding-fu?

NB: I'm not asking about concurrency models that are arguably better (Erlang's message passing, or Clojure's STM), just paradigms used in imperative languages.

+3  A: 

Doug Lea's Concurrent Programming in Java is an excellent book on the topic (though it is of course Java-specific).

Greg Hewgill
+6  A: 

Patterns for Parallel Porgramming is a good general book on concurrent programming techniques. It uses Java threads, OpenMP in C and MPI in C for the examples.

Pretty much any decent book on multithreaded programming in any of the languages you mention should cover the general principles. I'm covering this ground in C++ Concurrency in Action, for example.

Anthony Williams
+4  A: 

Java Concurrency in Practice is one of the most approachable and thorough overviews of this topic, especially if you are using Java (although I think it's useful even if you're not).

Alex Miller
A: 

You might find my Java Concurrency refcard a useful short reference for Java-specific questions.

Alex Miller