This is the mail archive of the
mailing list for the GCC project.
Re: Optimization of conditional access to globals: thread-unsafe?
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