bool Associative Array Synchronized

John Colvin john.loughran.colvin at gmail.com
Thu Mar 20 10:58:14 PDT 2014


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


More information about the Digitalmars-d-learn mailing list