Pointers may not be atomic types on platforms that use segmented address space, such as MS-DOS or Win 3.x. But I do not know the modern modern desktop / server platforms that use this architecture (at least at the platform level).
However, even if the record is atomic from the point of view of the C compiler, other problems may arise that arise even in modern desktop / server systems, especially when working with multi-core / multi-processor systems (caching, memory access reordering performed at a lower level by the processor). The "atomic" APIs provided by the platform handle these problems using memory barriers (if necessary), so you should still use these APIs when trying to provide access to memory with atoms.
Michael burr
source share