gpt4 book ai didi

c++ - 我应该使用 atomic 还是 volatile 作为指针?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:22:14 27 4
gpt4 key购买 nike

有两个线程(t1 和 t2)固定到两个不同的核心。它们都有一个共享变量,它是指向某个类类型的原始指针。 t1 只读指针,t2 读/写指针。我应该将指针声明为 volatile 或 atomic 还是两者兼而有之?

当 t2 更新这个指针时,t1 读取旧指针或新指针都可以,但它不应该读取任何中间值,因为它会导致段错误。

最佳答案

volatile 可用于告诉编译器不要优化对变量使用的内存的重复访问。显然,如果另一个线程可以更新变量,您将需要它。它被称为“几乎无用”的原因是,在太多情况下,这不足以保证正确的多线程行为,您需要查看内存栅栏和原子原语操作。

在某些处理器架构(如 Intel)上,只要内存正确对齐,对整数或指针的读取或写入将是原子的。参见示例 http://software.intel.com/en-us/forums/showpost.php?p=31711 Intel 链接不断变化,因此我无法找到权威资源。

关于c++ - 我应该使用 atomic 还是 volatile 作为指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10111865/

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