@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.
