Is there a description somewhere that details the conceptual differences between conditions, flags and mutexes, and why they are all implemented? The reference manual tells me how to use them, but is short on "why". I don't understand what conditions do that mutexes don't. Serializing multiple threads' access to data? Mutexes can do that. Waking up several threds at once? Fine, so why do we need mutexes then? Also, what is a flag other than a "multi-mutex"? Why do we have mutexes if flags are a superset of them? Please enlighten me! :-) /Björn