Concurrent Programming by Michel Raynal