From: Peter Dimov (pdimov_at_[hidden])
Date: 2004-09-20 05:16:37
John Maddock wrote:
>> I'm interested in getting something like "needs_lock" below into the
>> normal traits, perhaps as part of boost thread. It informs you
>> whether of not an operation on such a contiguous block needs a lock
>> to be atomic.
>> For example, on ia32 32 bit aligned ops are atomic, on ia64 it is 64
>> bit. doubles on ia32 need locking to be atomic, on ia64 they don't.
>> sizeof(void*) works generically for these two platforms as is
>> included in the code below. A default, safety first implementation
>> might return true always for needs lock, or perhaps, true for all
>> sizeof's greater than a byte.
> Is it the case that we could actually rely on this? I thought for
> example that on IA32 operations were only atomic and thread safe when
> the assembly is prefixed by LOCK?
AFAIK reads and ordinary writes are atomic without LOCK. Read-modify-write
operations need LOCK.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk