小编Yan*_*Zai的帖子

取消引用指针总是会导致内存访问吗?

我想知道无论编译器如何优化,取消引用指针是否总是会被转换为机器级加载/存储指令。

假设我们有两个线程,一个(我们称之为 Tom)接收用户输入并写入一个bool变量。该变量由另一个人(这是 Jerry)读取来决定是否继续循环。我们知道优化编译器在编译循环时可能会将变量存储在寄存器中。因此,在运行时,Jerry 可能会读取与 Tom 实际写入的值不同的过时值。因此,我们应该将bool变量声明为volatile

但是,如果引用指针总是会导致内存访问,那么两个线程可以使用指针来引用该变量。每次写入时,Tom 都会通过取消引用指针并将新值写入内存。每次读取时,Jerry 都可以通过取消引用同一指针来真正读取 Tom 所写的内容。这似乎比依赖于实现的更好volatile

我是多线程编程的新手,所以这个想法可能看起来微不足道且不必要。但我真的很好奇。

c c++ multithreading pointers

21
推荐指数
2
解决办法
2224
查看次数

标签 统计

c ×1

c++ ×1

multithreading ×1

pointers ×1