Java在C中的易失性?

2024-01-11

我知道使用volatile在爪哇。 即(基于维基百科文章 http://en.wikipedia.org/wiki/Volatile_variable):

对易失性对象的读取和写入存在全局顺序 多变的。这意味着每个访问易失性字段的线程 将在继续之前读取其当前值,而不是 (可能)使用缓存值。

我也知道存在volatileC 中的关键字,但在完全不同的上下文中,主要用于内存映射 I/O。

所以我想知道是否有像Java这样的构造volatile在C语言中?这将阻止 读取变量的缓存值?

如果它在 C 中不存在,是否可能有一个具有这种结构的库,例如pthread?


volatile在 C 中基本上是一个不合时宜的情况,旨在用于完全不同的场景,并且对于多线程编程没有用处。由于某些原因,即使是最新的 C++ 标准也无法赋予它更多含义,而不得不发明一个新的关键字。

请注意,这意味着volatile正如 C 标准所定义的那样,编译器可能会为您提供额外的保证(我知道 MS VC 确实如此,并且我认为它提供的保证与 java 中的 volatile 基本相同),但这意味着程序被锁定到该编译器。大多数编译器还具有一些用于插入内存屏障的内在函数,这更加明确,但本身又不可移植。

在实践中,您可能最好使用一些更高级别的线程库,它为工作提供了正确的工具。例如。 POSIX 为您提供了低级别的内存障碍。

在 C++ 网站上,自 0x11 以来它更好 - 标准确实提供std::atomic_thread_fence和原子变量。请注意,c++0x11 内存模型是NOT与 java 相同,因此移植时必须小心。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java在C中的易失性? 的相关文章

  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • 公交车公共交通算法

    我正在开发一个可以查找公交路线的离线 C 应用程序 我可以提取时间表 巴士 路线数据 我正在寻找适用于基本数据的最简单的解决方案 可以使用什么算法来查找从巴士站 A 到巴士站 B 的路线 是否有适用于 C Java 的开源解决方案 数据库的
  • 自己绘制的WPF自定义滑块

    这是我关于堆栈溢出的第一个问题 所以不要踢它 我在尝试创建 Mac 风格的滑块控件时遇到问题 我已经发现这个解决方案 http www codeproject com KB miscctrl MAC Slider aspx我已经在我的解决方
  • 注入包含接口的所有已注册实现的 Enumerable

    给出以下接口 public interface IMyProcessor void Process 我希望能够注册多个实现 并让我的 DI 容器将它们的可枚举注入到这样的类中 public class MyProcessorLibrary
  • X 轴和 Z 轴上的 Quaternion.Slerp,无 Y 轴

    I am trying to rotate the Player about X Y and Z axis The Y axis should not move from last angle Example if I rotate 45
  • 如何在 C++ 中正确使用 cin.fail()

    我正在编写一个程序 从用户那里获取整数输入cin gt gt iUserSel 如果用户输入一个字母 程序就会进入无限循环 我试图用下面的代码来阻止这种情况 但程序进入无限循环并打印出 错误 输入 我该如何修复我的程序 cin gt gt
  • Spring 4 MVC 和 Websockets - 没有合适的默认 RequestUpgradeStrategy

    我需要 Websockets 在我的应用程序中进行实时更新 所以我找到了这个例子并一步一步地做到了here http raymondhlee wordpress com 2014 01 19 using spring 4 websocket
  • 清单合并失败:需要为 显式指定 android:exported

    我的清单文件有问题 错误消息 清单合并失败 android 需要为 明确指定导出 面向 Android 12 及更高版本的应用需要指定显式值android exported当相应的组件定义了意图过滤器时 有关详细信息 请参阅 https d
  • 访问 JAR 资源

    我有一个jar包含我想要分发的资源 主要是缓存 日志记录等配置 的文件 我对这些资源的相对路径有问题 所以我做了我在另一个 stackoverflow 问题中发现的问题 该问题说这是一种有效的方法 ClassInTheSamePackage
  • 我们可以将请求分派到 servlet 内的 HTML

    这可能吗 RequestDispatcher rd request getRequestDispatcher index html rd forward request response 是的 您可以将请求分派到 HTML 页面
  • 运行实体框架自定义工具,它有什么作用?

    在 Visual Studio 中 当使用实体框架并为 tt 和 Context tt 文件应用运行自定义工具时 它是什么以及它有什么作用 为什么它解决数据库同步问题 有时 为什么我应该在运行 tt 之前运行它 Context tt 它被称
  • 如何在两种不同模式、两种布局中设置方向?

    我有一个叫做Main XML我将方向设置为纵向AndroidManifest xml 我也为 Honeycomb 设计了这个布局并将其放置在layout xlarge mdpi文件夹 但我想使用Main XML in layout xlar
  • SQL准备语句如何通过多个可能的菜单选择进行选择?

    所以我有 4 个菜单选择 产品 位置 课程类型和类别 所有这些都可以为空 使用 JSF 编程 但这应该与这个问题无关 因为它是一个 SQL 问题 菜单选择将向托管 bean 发送用户选择的变量 并使用准备好的语句使用用户选择的菜单中的信息
  • 如何在VS2005中使用从.bat而不是.exe启动的外部程序进行调试?

    在我的 c 项目的调试属性中 我选择了 启动外部程序 并选择了我希望将调试器附加到的程序的 exe 但是 现在我需要从 bat 文件而不是 exe 启动程序 但 VS2005 似乎不允许这样做 这可能吗 编辑 为了澄清 我需要调试从 bat
  • 在 clang 中向量化函数

    我正在尝试根据此用 clang 对以下函数进行矢量化铿锵参考 http llvm org docs Vectorizers html 它采用字节数组向量并根据以下条件应用掩码this RFC https www rfc editor org
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • C# 多维数组解析

    我有一个多维数组 内容在调试器中看起来像这样 数组设置为 String s new String 6 4 A B Yes C A B Yes C A B No C A B Yes C A B Yes C A B Yes C A B No C
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题

随机推荐

  • Brunch 需要使用 Node.js 模块

    我设置了 Brunch 以便于一起编译 JS 但也希望能够将 node js 模块与 require 一起使用 尝试了一段时间后 我被难住了 我希望能够做这样的事情 var myJSfile1 require foo var myJSfil
  • 带有 Active Directory PartialResultException 的 JNDI

    我基本上是在 Active Directory 中遍历 LDAP 树 在我查询的每个级别 objectClass 当我在根上执行此操作时 例如 dc example dc com 我得到下面的异常 这在我们的其他 LDAP 实例上运行良好
  • 如何使用 C# 4.0 检测 Windows 8 操作系统?

    我必须在我的 C Windows 应用程序中检测 Windows 8 操作系统并进行一些设置 我知道我们可以使用以下命令检测 Windows 7Environment OSVersion 但是如何检测Windows 8呢 提前致谢 Vers
  • SQL查询和Unicode问题

    我对 unicode 数据的 Sql 查询有一个非常奇怪的问题 这是我所得到的 SQL Server Express 2008 R2 AS 包含汉字 单词 短语的表 100 000行 当我运行以下命令时 我得到了正确的行 返回的 36 个其
  • Delphi中绝对路径和相对路径的转换

    Delphi中有执行绝对相对路径转换的标准函数吗 例如 基本 路径是 C Projects Project1 相对路径是 Shared somefile pas 绝对路径是 C Projects Shared somefile pas 我正
  • IntelliJ 缩短 Cucumber 测试的命令行 [重复]

    这个问题在这里已经有答案了 我在 IntelliJ 中运行 Cucumber 测试时遇到问题 当我尝试运行功能或场景时 出现以下错误 Error running Feature
  • 列名作为 INSERT 语句中的参数

    我想创建一个存储过程我想在表中插入值的地方 但我不知道我必须在哪个字段中插入值以及在运行时我将决定应将值插入哪个字段 我想做的是 insert into Tablename ColumnName Description values Col
  • 如何实现可写流

    我想将数据从 amazon kinesis 流传输到 s3 日志或 Bunyan 日志 该示例使用文件写入流或标准输出 我将如何实现我自己的可写流 this works var file fs createWriteStream my lo
  • 以编程方式更改 Google 翻译下拉菜单

    在一个网站上 我尝试使用以下代码添加谷歌翻译下拉列表 function googleTranslateElementInit new google translate TranslateElement pageLanguage en goo
  • Facebook“点赞按钮”返回 X-Frame-Options Deny

    我正在尝试在博客的每篇文章上添加一个 Facebook 的 点赞按钮 代码粘贴正确 但我收到此错误 Refused to display https www facebook com undefined plugins like php a
  • 用于 32 位 x86 汇编的 DOS 调试程序

    你们中的许多人可能还记得古老的 DOS 程序 debug 尽管它在很多方面都已经过时 但它的好处之一是 人们可以轻松地找到给定指令的字节序列 而无需经历编写程序 编译 反汇编 检查文件内容等步骤 输入指令 然后转储指令地址 遗憾的是 调试
  • 滚动直到元素可见 iOS UI Automation with Xcode 7

    因此 通过新的 Xcode 更新 Apple 改变了我们进行 UI 测试的方式 在工具中 我们使用java脚本函数 isVisible 来确定我们的目标元素是否可见 我正在尝试在 Objective C 中复制它 但我似乎找不到与之等效的东
  • 管道中的控制台输出:Jenkins

    我创建了一个复杂的管道 在每个阶段我都称之为工作 我想查看 Jenkins 某个阶段中每个作业的控制台输出 如何获得 从构建步骤返回的对象可用于查询日志 如下所示 pipeline agent any stages stage test s
  • 为什么我不能在具有类型参数的特征上添加一揽子实现?

    考虑这两个特征 pub trait Foo fn new arg u32 gt Self pub trait Bar p Foo fn with parameter arg u32 parameter P gt Self 我想添加毯子暗示
  • Push Segue 在 iOS 5 中不起作用

    我对 IOS 非常陌生 我正在使用情节提要功能来创建应用程序 这就是我想要的 我有两个视图控制器 一个 ViewController 和两个 ViewController 我在一个 ViewController 中有一个按钮 O 按住 ct
  • 迭代通过域模型上的 linq 查询返回的对象的属性和值

    我在关系数据库中有一个自定义实体 我已通过域模型将其映射到 CLR 因此 通过使用以下语句 我可以通过域模型上的 LINQ 查询将实体从数据库拉入内存 如下所示 var inspection from i in dbContext New
  • 在 swift 中将 JSON 对象解析为字符串数组

    我有以下 Json 响应 language en textAngle 0 orientation Up regions boundingBox 96 29 244 474 lines boundingBox 96 29 58 12 word
  • 使用字符串/分类特征(变量)进行线性回归分析?

    回归算法似乎正在研究以数字表示的特征 例如 该数据集不包含分类特征 变量 如何对这些数据进行回归并预测价格是非常清楚的 但现在我想对包含分类特征的数据进行回归分析 有5特征 District Condition Material Secur
  • -1 * int.MinValue == int.MinValue??这是一个错误吗?

    在 C 中我看到了 1 int MinValue int MinValue 这是一个错误吗 当我尝试实现搜索树时 它真的把我搞砸了 我最终使用了 int MinValue 1 这样我就可以正确地否定它 这不是一个错误 int MinValu
  • Java在C中的易失性?

    我知道使用volatile在爪哇 即 基于维基百科文章 http en wikipedia org wiki Volatile variable 对易失性对象的读取和写入存在全局顺序 多变的 这意味着每个访问易失性字段的线程 将在继续之前读