lon*_*kit 4 c++ multithreading
任何人都知道原始全局变量是否是线程安全的?
// global variable
int count = 0;
void thread1()
{
count++;
}
void thread2()
{
count--;
if (count == 0) print("Stuff thing");
}
Run Code Online (Sandbox Code Playgroud)
我可以这样做而没有任何锁定保护count吗?
谢谢.
这不是线程安全的.你这里有种族条件.原因是,这count++不一定是原子的(意味着不是单个处理器操作).首先加载该值,然后递增,然后写回.在每个步骤之间,另一个线程也可以修改该值.