Sun Studio 12 Update 1: OpenMP API User's Guide

3.2 Memory Model

There is no guarantee that memory accesses by multiple threads to the same variable without synchronization are atomic with respect to each other. Several implementation-dependent and application-dependent factors affect whether accesses are atomic or not. Some variables might be larger than the largest atomic memory operation on the target platform. Some variables might be mis-aligned or of unknown alignment and the compiler or the run-time system may need to use multiple loads/stores to access the variable. Sometimes there are faster code sequences that use more loads/stores.