63得票5回答
一个C编译器是否允许合并对volatile变量的连续赋值?

硬件供应商报告了一种理论上的(非确定性,难以测试,从未在实践中出现)硬件问题,即对某些内存范围进行双字写入可能会破坏任何未来的总线传输。 虽然我的C代码中没有明确的双字写入,但我担心编译器允许(在当前或未来的实现中)将多个相邻的字分配合并为一个双字分配。 编译器不允许重新排序易失性分配,但不清...

63得票6回答
指针声明为常量和易失性变量

在阅读过程中,我遇到了这种声明类型和以下的一行代码 -const volatile char *p=(const volatile char *) 0x30; p的值仅受外部条件影响 我不明白所谓的“外部条件”是什么。这种声明有什么实际用途?

60得票3回答
使用volatile long有意义吗?

我偶尔使用volatile实例变量,在有两个线程从中读取/写入并且不想承担获取锁的开销(或潜在死锁风险)的情况下;例如,一个定时器线程周期性地更新一个int ID,该ID作为某个类上getter方法的公开属性:public class MyClass { private volatile ...

58得票5回答
在Java中,何时使用volatile boolean比AtomicBoolean更好?

我查看了其他关于volatile vs. Atomicxxxx问题的stackoverflow帖子(包括这个),并阅读了java.util.current.atomic的说明,但对细微差别不太满意。 如果我要在使用volatile boolean和AtomicBoolean之间做出决策,除了...

54得票3回答
Java中的volatile字段和synchronized块中的happens-before关系对非volatile变量有何影响?

我对线程的概念还比较新,正在尝试更深入地了解它。最近,我看到了Jeremy Manson在他的博客文章《Java中的Volatile是什么意思》中写道: 当一个线程写入一个volatile变量,另一个线程看到这个写操作时,第一个线程告诉第二个线程,直到它执行写操作到这个volatile...

53得票5回答
为什么在同步块中要使用volatile?

我在Java中看到一些示例,在代码块上进行同步以更改某些变量,而该变量最初被声明为volatile。我在一个单例类的示例中看到了这个,他们将唯一实例声明为volatile,并且在初始化该实例的代码块上同步...我的问题是为什么我们要声明它为volatile,同时对它进行同步?难道其中一个不足以...

52得票7回答
互斥锁函数在没有volatile的情况下是否足够?

我和同事开发了适用于各种平台的软件,这些平台运行在x86、x64、Itanium、PowerPC和其他10年前的服务器CPU上。 我们刚刚讨论了诸如pthread_mutex_lock() ... pthread_mutex_unlock()这样的互斥函数是否足够,或者是否需要使用volat...

52得票1回答
为什么C++20中弃用了volatile关键字?

根据cppreference,C++20中大多数使用volatile关键字的用法都将被弃用。那么volatile的缺点是什么?在不使用volatile时有哪些替代解决方案?

48得票1回答
如何消除易变性?

如何消除变量的易失性?我应该使用哪种C++风格的转换?

47得票5回答
为什么System.Double和System.Long不使用volatile?

像我这样的问题已经被提出了,但我的问题有点不同。问题是,“为什么在C#中不允许在System.Double和System.Int64等类型上使用volatile关键字?” 乍一看,我回答我的同事,“嗯,在32位机器上,那些类型至少需要两个滴答声才能进入处理器,并且.Net框架有意抽象掉处理...