On Sun, 2007-10-28 at 19:36 +0100, Erik Trulsson wrote: > > Having just been pointed to that copy of the SUS, I must agree. I can't > find anything in there saying anything at all about what is required to > safely share data between threads. If that is really so it seems 'pthreads' > are even more under-specified than I thought (and I had fairly low > expectations in that regard.) > I really hope there is something I have missed.
Clearly when two threads are both running, one write to a variable means no other thread can safely read or write it (assuming not atomic). Mutex prevents more than one thread entering a particular piece of code (that's defined, right?) So the idea is clearly that once this is done, it is safe to read or write a variable because no one else will. Clearly the programmer must ensure no one else does. Now, you are right Posix does not specify it is safe. What you miss is that it doesn't have to: if it were not safe, mutex would be useless, and since Posix specifies Mutex it intends it to be useful.. so it follows that it is safe .. no volatile required... :) Remember Posix is an ISO Standard which codifies existing practice and everyone makes the above assumptions. -- John Skaller <skaller at users dot sf dot net> Felix, successor to C++: http://felix.sf.net