I just checked the juce atomic operations and can see the templated class still uses the keyword volatile. Can anyone give me a good reason why this is used?
line 153 of juce_Atomic.h in the latest tip dated 16 May 2014:
volatile Type value;
This will just cause everything to slow down and it won't help with any multi-threading issues. If the memory inside is always swapped / incremented with memory barrier than that is all that is needed, and will give optimal performance.