是否有任何普遍遵循的标准(ISO C 或 C++,或任何 POSIX/SUS 规范)保证一个变量(可能标记为 volatile),不受互斥锁保护,被多个线程访问,最终将变得一致如果它被分配到?
举一个具体的例子,考虑两个线程共享一个变量 v,初始值为零。
线程 1:v = 1
线程 2:while(v == 0) yield();
线程 2 是否保证最终终止?或者它可以想象永远旋转,因为缓存一致性永远不会启动并使分配在线程 2 的缓存中可见?
我知道 C 和 C++ 标准(在 C++0x 之前)根本没有谈到线程或并发性。但我很好奇 C++0x 内存模型、pthreads 或其他任何东西是否能保证这一点。(显然,这确实适用于 32 位 x86 上的 Windows;我想知道它是否是可以普遍依赖的东西,或者它是否恰好在那里工作)。