多线程环境中有一个变量(例如int temp;)。 某些线程会对其进行写入,并受到写锁保护。 而其他人读取变量,但没有任何锁定。
我的问题是: 如果变量被写入 SET 中的元素之一(例如 {1, 2, 3}), 某些线程重复执行。 当我读到它时,它总是那一套吗?
最佳答案
规则非常简单:如果两个或多个线程访问同一个变量,并且其中至少一个线程写入该变量,则您必须同步所有这些访问。如果不这样做,则行为未定义。
volatile
在这里没有帮助;使用互斥体或条件变量,或者使变量本身成为原子的。 (“原子”意味着 C++11 原子,而不是某些人认为在多线程应用程序中表现良好的属性选择)。
关于c++ - 多线程环境下读取变量总是有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15655167/