On Thursday, 20 March 2014 at 17:43:58 UTC, Etienne wrote:
I'd like to "cowboy it" on an AA that looks like this:
__gshared bool[string] m_mutex;
I think it'll be much faster for my code because this AA could
need to be checked and switched possibly millions of times per
second and I wouldn't want to slow it down with a mutex
protecting it.
I'm thinking the bool would be synchronized at the hardware
level anyway, since it's just a bit being flipped or returned.
Am I right to assume this and (maybe an assembly guru can
answer) it safe to use?
Thanks
On x86 only?
If all you do is read/write from/to each location then you are
guaranteed atomicity. Adding/removing members? Forget it
Also, atomicity is not a strong enough guarantee for implementing
a mutex, which is what I assume you are trying to do. You need
ordering guarantees as well.
Watch both of these:
http://channel9.msdn.com/Shows/Going+Deep/Cpp-and-Beyond-2012-Herb-Sutter-atomic-Weapons-1-of-2
http://channel9.msdn.com/Shows/Going+Deep/Cpp-and-Beyond-2012-Herb-Sutter-atomic-Weapons-2-of-2
and then look at core.atomic
and then give up and use a lock :p