gpt4 book ai didi

c - volatile 适合这种用法吗?

转载 作者:行者123 更新时间:2023-11-30 18:19:16 24 4
gpt4 key购买 nike

假设我在这样的循环中检查变量。

while( var )
;

这里,如果程序是多线程的并且var被多个线程访问,则必须将var声明为 volatile 。这是众所周知的事实。但是,可以说,我们有这样的东西。

while( var + 1 )
;

这仍然适用于 volatile 吗?我的意思是编译器是否有可能缓存 (var + 1) 的值?换句话说,我问我们是否需要像下面这样编写代码,其中 temp 也是一个 volatile 变量,以确保编译器不会进行缓存.

while( temp )
temp = var + 1;

最佳答案

我想补充一点,使用 volatile 作为线程保护来检查这样的变量根本不足以防止各种竞争条件的发生。如果您处于线程环境中,请使用适当的锁、原子和/或互斥结构来获取和操作您的变量。

关于c - volatile 适合这种用法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9807957/

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