具有全局变量的C++多线程

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吗?

谢谢.

Bjö*_*lex 6

这不是线程安全的.你这里有种族条件.原因是,这count++不一定是原子的(意味着不是单个处理器操作).首先加载该值,然后递增,然后写回.在每个步骤之间,另一个线程也可以修改该值.