views:

428

answers:

8

Do you guys know a more theoretical book/articles about concurrent access / sync methods? I am mostly interested of how semaphores, mutexes and other synchronization mechanisms are implemented.

I did grasp the basics of Steven's second volume of Unix Network Programming, but I feel that I need something more abstract to really get the overall picture.

+1  A: 

If you don't mind a Windows slant on things (which does mean you get really in-depth implementation details):

Jon Skeet
I just had a look at this one on safari and it does look that this book is very well written. Thanks!
hyperboreean
+3  A: 

Concurrent programming in Java is a bible on best practice, not just for Java. Bob Martin latest book : Clean Code as nice chapter on how to make concurrent programming part of your code... clean!

pmlarocque
+1  A: 

If you're working in Java, you can't beat Java Concurrency in Practice by Brian Goetz.

Limbic System
A: 

I like the Intel Threading Building Blocks book. This is one of the (very few) books that actually make me feel good about parallel programming.

Dmitri Nesteruk
+4  A: 

I can think of 4 books that may interest you. The first 2 are Java specific. The third and fourth are more general:

Julien Chastang
+1  A: 

Event though it doesn't quite address the techniques you mention I'll take any chance I get to recommend Joe Armstrong's book on Erlang which is very much about concurrent programming.

Programming Erlang: Software for a Concurrent World

Learning a functional language is something that I'd recommend to any developer, it changes the way you think about programming and helps you attack problems from different angles. I'd say it helps you as a programmer even if you'll never write a single line of code in the language you learn.

Patrik Hägne
A: 

The Art of Multiprocessor Programming, by Herlihy and Shavit (published by Morgan Kaufmann) covers that subject pretty thoroughly.

It is based mostly on Java code, and tends to avoid mathematical presentation in favor of Java examples. You may find this an advantage or a disadvantage (I found it kind of annoying, myself). But, if you're not satisfied with their presentation, they have a really nice bibliography.

comingstorm
+2  A: 

You asked for theory. Tony Hoare invented half the concurrency constructs out there (like monitors); you might try his book on Communicating Sequential Processes, which is devoted solely to message-passing concurrency, or Essays in Computing Science, which covers concurrency among other topics. Tony writes beautifully and the Essays book in particular is a pleasure to read.

The guy who invented the other half of concurrent stuff is Edsger Dijkstra, who invented the semaphore. I am not as big a fan of Dijkstra as I think his work is not very accessible to the programmer at large, but you might want to look at his scholarly monograph on Cooperating Sequential Processes.

Norman Ramsey