9得票2回答
易失变量表达式的微不足道语句的正确行为是什么?

考虑以下陈述: volatile int a = 7; a; // statement A volatile int* b = &a; *b; // statement B volatile int& c = a; c; // statement C 现在,我一...

69得票4回答
为什么Java 5+中的volatile不能确保另一个线程的可见性?

根据: http://www.ibm.com/developerworks/library/j-jtp03304/ 在新的内存模型中,当线程A向易失变量V写入,并且线程B从V读取时,任何在V写入时对A可见的变量值现在都保证对B可见 许多互联网上的资料都指出,以下代码永远不应该打印...

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

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

10得票5回答
互斥锁的存在有助于消除volatile关键字吗?

我有一个多读写锁类,它维护了读、写以及待处理的读取和待处理的写入计数器。一个互斥量用于防止多个线程同时访问它们。 我的问题是:我们是否仍需将计数器声明为volatile,以便编译器在进行优化时不会出错。 或者编译器是否考虑到这些计数器被互斥量保护。 我知道互斥量是一种运行时机制,用于同步...

805得票25回答
volatile关键字有什么用处?

今天在工作中,我遇到了Java中的volatile关键字。由于不是很熟悉它,我找到了这篇说明文章。 鉴于该文章详细解释了关键字的相关内容,您是否曾经使用过它,或者是否可以想象出可以正确使用该关键字的情况?

14得票3回答
“快速路径”无争用同步是什么意思?

来自JCIP book的性能和可扩展性章节: 同步机制针对无争用情况进行了优化(volatile始终是无争用的),并且在撰写本文时,大多数系统中“快速路径”无争用同步的性能成本范围从20到250个时钟周期。 作者在这里所说的快速路径无争用同步是什么意思?

514得票2回答
为什么我们使用volatile关键字?

可能重复: 为什么会有 volatile? 我从未使用过它,但我想知道为什么人们使用它?它到底是做什么的?我在论坛上搜索了一下,只找到了关于 C# 或 Java 的话题。

8得票2回答
没有使用 volatile 的双重检查锁定(但使用 VarHandle 的 release/acquire)

问题相对简单。假设我有这个类: static class Singleton { } 我希望为它提供一个单例工厂。我可以做(可能)显而易见的事情。我不会提到枚举可能性或任何其他可能性,因为它们对我没有兴趣。 static final class SingletonFactory { ...

8得票1回答
为什么std::atomic中的所有成员函数都有和没有volatile两种形式?

我注意到std::atomic<T>类型的大多数成员函数都声明了两次,一次带有volatile修饰符,一次没有 (例子)。我查看了G++标准库实现的源代码,并发现它们全部是完全相同的副本,例如, bool load(memory_order __m = memory_order_...

9得票5回答
全局变量在函数调用之间是否会被刷新?

我正在编写嵌入式固件,有时候很难确定需要使用volatile关键字。 当我有一个等待某个布尔标志通过中断被改变的函数时,很明显需要使用volatile关键字,否则函数将永远等待,因为编译器不会意识到值可以被中断改变。 但是当我有一个简短的函数,只需要在第一行检查一个标志时,我希望这个标志不...