c++ - 多线程环境下读取变量总是有效吗?

标签 c++ linux multithreading kernel cpu

多线程环境中有一个变量(例如int temp;)。 某些线程会对其进行写入,并受到写锁保护。 而其他人读取变量,但没有任何锁定。

我的问题是: 如果变量被写入 SET 中的元素之一(例如 {1, 2, 3}), 某些线程重复执行。 当我读到它时,它总是那一套吗?

最佳答案

规则非常简单:如果两个或多个线程访问同一个变量,并且其中至少一个线程写入该变量,则您必须同步所有这些访问。如果不这样做,则行为未定义。

volatile 在这里没有帮助;使用互斥体或条件变量,或者使变量本身成为原子的。 (“原子”意味着 C++11 原子,而不是某些人认为在多线程应用程序中表现良好的属性选择)。

关于c++ - 多线程环境下读取变量总是有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15655167/

相关文章:

c++ - 'inline' 变量可以像内联函数一样内联吗?

java - 如何从 JFrame 中删除 JPanel?

c# - 多线程http请求

c++ - 获取进程标识符总是返回 0

c++ - 如何检查类型是否可显式/隐式构造?

linux - 共享内存 : location and locking strategies

c - 如何为 Arm Linux 构建静态版本的 pcap 库

java - Android中的多线程警告

c++ - 在二维数组的矩形区域内快速找到最大值的方法

php - linux worker 脚本/队列 (php)