Slides for tomorrow night
Andrei Alexandrescu
andrei at metalanguage.com
Tue Oct 19 00:44:25 BST 2004
> Slide 5 and 6: I think this isn't quite accurate. Generally reads
> and writes can't be moved across the lock because lock
> implementations are carefully designed to make them opaque to the
> compiler.
Yes, but the language has no notion of opaque, which is what a
standardization committee deals with. But yes, point taken. I changed
the slides to gloss over the issue in a different way :o). I've reread
your example (after optimization):
r = x;
for (...) {
if (...) { x = r; pthread_mutex_lock(...); r = x; }
r = ... r ...
if (...) { x = r; pthread_mutex_unlock(...); r = x; }
}
x = r;
and I will talk about it if anyone asks.
> Slide 8: My impression is that even if both are volatile, the
> official pthreads position is that volatile has nothing to do with
> thread visibility, and therefore you get no gurantees.
True. The issue is what the standard says, and it does say that the
sequence is preserved. On the other hand, it also says that the
semantics of "observing" a volatile variable are up to the
implementation. So there's not much of a guarantee there.
Pthreads wisely chose to stay away from volatile's
insufficiently-defined semantics.
I attach a modified deck of slides incorporating most of the good
suggestions that I've gotten. Thanks, and let me know of any more. I
guess I'll have some more time before the meeting.
Andrei
More information about the cpp-threads
mailing list