Pos*_*don 6 c c++ thread-safety
下面的代码段是否会在多线程场景中按预期工作?
int getUniqueID()
{
static int ID=0;
return ++ID;
}
Run Code Online (Sandbox Code Playgroud)
这些ID不必连续 - 即使它跳过一个值,也没关系.可以说当这个函数返回时,返回的值在所有线程中都是唯一的吗?
FRo*_*owe 18
不,它不会.您的处理器需要执行以下步骤来执行此代码:
如果在此(非原子)序列期间发生线程切换,则可能发生以下情况:
所以,两个线程都返回2.