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.
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.