Boost logo

Boost Users :

Subject: [Boost-users] [interprocess] atomic_write32
From: peter jacobsen (jacobsen.peter_at_[hidden])
Date: 2011-12-08 11:04:33


I have noticed that for Windows, atomic_write32 is defined thus:

inline void atomic_write32(volatile boost::uint32_t *mem, boost::uint32_t val)
{ winapi::interlocked_exchange(reinterpret_cast<volatile long*>(mem), val); }

Whereas otherwise like this:

inline void atomic_write32(volatile boost::uint32_t *mem, boost::uint32_t val)
{ *mem = val; }

the reads are both:
return *mem;

Windows documentation states that:
'Simple reads and writes to properly-aligned 32-bit variables are
atomic operations.'
[http://msdn.microsoft.com/en-us/library/windows/desktop/ms684122%28v=vs.85%29.aspx]

Is there a reason for this?

Thanks,
Peter


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net