gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 11:45:57 25 4
gpt4 key购买 nike

在多线程环境中有一个变量(例如 int temp;)。一些线程写入它,写锁保护。而其他人读取变量,但没有任何锁定。

我的问题是:如果变量被写为 SET 中的元素之一(例如 {1, 2, 3}),通过一些线程反复。当我阅读它时,它总是那个 SET 之一吗?

最佳答案

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

volatile 在这里无济于事;使用互斥量或条件变量,或使变量本身成为原子变量。 (“原子”表示 C++11 原子,而不是某些人认为在多线程应用程序中表现良好的属性选择)。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com