如果我有这样的事情...
volatile long something_global = 0;
long some_public_func()
{
return something_global++;
}
当使用多个线程访问时,期望此代码不会中断(竞争条件)是否合理?如果它不是标准的,它仍然可以作为现代编译器的合理假设来完成吗?
注意:我使用它的全部目的是原子递增和递减 - 没有什么更奇特的。
否 - 易失性并不意味着同步。它只是意味着每次访问都将返回最新的值(而不是在线程中本地缓存的副本)。
后递增不是原子操作,它是内存访问,然后是内存写入。交错两个可能意味着该值实际上只增加一次。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)