@Rayman2220 @wizzardx I had shared memory issue in OpenMP at one point in 
Arraymancer (solved since then).

I just checked volatile and from this [Intel 
post](https://software.intel.com/en-us/blogs/2007/11/30/volatile-almost-useless-for-multi-threaded-programming),
 it says that there is no guarantee to have a memory fence, it just so happens 
that for x86 and Itanium volatile implies memory fences.

Consequently Intel removed all volatile variables from their TBB (Intel Threads 
Building Blocks, their task parallelism library).

So volatile in C is good for interrupts/hardware communication when memory can 
be written suddenly by the hardware but not suitable for multithreading.

Reply via email to