相关疑难解决方法(0)

为什么我们在C++中使用volatile关键字?

可能重复:
C++:什么时候有挥发性关键字帮你?

我从来没有用过它,但我想知道为什么人们会用它?它到底是做什么的?我搜索了论坛,发现它只是C#或Java主题.

c++ volatile compiler-optimization

347
推荐指数
2
解决办法
25万
查看次数

为什么存在易变?

什么是volatile关键词呢?在C++中它解决了什么问题?

就我而言,我从来没有故意需要它.

c++ volatile c++-faq

206
推荐指数
11
解决办法
4万
查看次数

什么时候使用volatile多线程?

如果有两个线程访问全局变量,那么许多教程都说使变量volatile变为阻止编译器将变量缓存在寄存器中,从而无法正确更新.但是,访问共享变量的两个线程是通过互斥锁来调用保护的东西不是吗?但是在这种情况下,在线程锁定和释放互斥锁之间,代码处于一个关键部分,只有那个线程可以访问变量,在这种情况下变量不需要是volatile?

那么多线程程序中volatile的用途/目的是什么?

c++ concurrency multithreading atomic volatile

121
推荐指数
3
解决办法
5万
查看次数

什么是"volatile"关键字用于?

我阅读了一些关于该volatile关键字的文章,但我无法弄清楚它的正确用法.你能告诉我在C#和Java中它应该用什么吗?

c# java volatile

118
推荐指数
6
解决办法
5万
查看次数

如何防止gcc优化C中的一些语句?

为了使页面变脏(打开页表项中的脏位),我触摸页面的第一个字节,如下所示:

pageptr[0] = pageptr[0];
Run Code Online (Sandbox Code Playgroud)

但在实践中,gcc将忽略死店淘汰的陈述.为了防止gcc优化它,我重新编写语句如下:

volatile int tmp;
tmp = pageptr[0];
pageptr[0] = tmp;
Run Code Online (Sandbox Code Playgroud)

似乎这个伎俩有效,但有点难看.我想知道是否有任何指令或语法具有相同的效果?而且我不想使用-O0旗帜,因为它也会带来很大的性能损失.

c gcc

95
推荐指数
3
解决办法
12万
查看次数

C语言中的volatile关键字?

我对C语言中的volatile有疑问.

我读了一些教程,但仍然无法弄清楚,有些人说,volatile告诉编译器优化器,不应该以某种方式优化涉及这个变量的操作.这意味着只要变量的值在寄存器中发生变化,该值就会影响内存.

而且有些人说volatile是指可以通过此代码之外的方式更改值.

我无法理解第二种说法,因此可以通过此代码之外的方式更改volatile变量?怎么样?这两个说对了吗?

c volatile

29
推荐指数
4
解决办法
4万
查看次数

什么样的优化在C++中"易失"?

我正在查找关键字volatile以及它的用途,我得到的答案非常多:

它用于防止编译器优化代码.

有一些示例,例如轮询内存映射硬件时:没有volatile轮询循环将被删除,因为编译器可能会识别出条件值永远不会更改.但由于只有一个例子或两个例子,它让我思考:volatile在避免不必要的优化方面我们还需要使用其他情况吗?条件变量是唯一volatile需要的地方吗?

我认为优化是特定于编译器的,因此未在C++规范中指定.这是否意味着我们必须通过直觉,说嗯,我怀疑如果我没有声明该变量volatile或者是否有任何明确的规则,我的编译器将废除它

c++ optimization volatile

25
推荐指数
3
解决办法
8600
查看次数

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

volatile关键字有什么用?

在C/C++中使用volatile关键字有什么用?声明变量volatile与不声明变量之间有什么区别volatile

c c++

20
推荐指数
3
解决办法
9296
查看次数

易变量

存储在程序存储器中的volatile变量在哪里(哪个部分)?

c memory multithreading volatile

16
推荐指数
3
解决办法
3万
查看次数