On Sun, Oct 28, 2007 at 06:29:44PM +0100, Richard Guenther wrote: > On 10/28/07, Erik Trulsson <[EMAIL PROTECTED]> wrote: > > On Sun, Oct 28, 2007 at 03:03:46PM -0000, Dave Korn wrote: > > > On 28 October 2007 13:32, Bart Van Assche wrote: > > > > > > > Requiring that all > > > > thread-shared variables should be declared volatile is completely > > > > unacceptable. > > > > > > Any variable that may be altered by an external unpredictable > > > asynchronous > > > 'force majeure' must be declared volatile or the behaviour is undefined. > > > Your > > > code is simply incorrect, and you appear to be demanding that the language > > > standards and the compiler all be revised to make the buggy code valid. > > > > > > Unfortunately it seems that the POSIX standard for threads say that as long > > as access to a shared variable is protected by a mutex there is no need to > > use 'volatile'. > > Which is a very unpracticable say, as it essentially would force the compiler > to assume every variable is protected by a mutex (how should it prove > otherwise?)
Not quite, but nearly so. There are some situations where the compiler can prove that a variable cannot be shared - for example a variable which is local to a function, where that function never passes the address of that variable to any other function (and where that function itself does not create any new threads). In that case no other thread can know the address of that variable and thus it cannot be shared. -- <Insert your favourite quote here.> Erik Trulsson [EMAIL PROTECTED]