Cla*_*bel 4 c c++ concurrency multithreading atomic
如果我有这样的东西......
volatile long something_global = 0;
long some_public_func()
{
return something_global++;
}
Run Code Online (Sandbox Code Playgroud)
当使用多个线程访问时,期望此代码不会中断(竞争条件)是否合理?如果它不是标准的,它仍然可以作为现代编译器的合理假设吗?
注意:所有我使用它的原因是原子增量和减量 - 没有什么比这更好的了.
dan*_*ben 16
不 - 易失并不意味着同步.它只是意味着每次访问都将返回最新的值(而不是在线程中本地缓存的副本).
后增量不是原子操作,它是内存访问,后跟内存写入.交错两个意味着该值实际上只增加一次.