Volatile.Read / Volatile.Write 是“双”原子的吗?

2023-11-23

MSDN 指出:

其他类型的读取和写入,包括long, ulong, double, and decimal以及用户定义的类型不需要是原子的。

C# 7.0 规范草案 - 变量 - 9.6 变量引用的原子性

Will Volatile.Write(Double, Double)作为原子操作工作?如果是这样,这如何保证?

这样做安全吗Volatile.Write(ref mydouble, value);在一个线程中并且Volatile.Read(ref mydouble)在另一个地方mydouble has double type?

这是一般性问题。另一个问题 - 在这种特殊情况下我应该做什么:

  • 2 处理器 Xeon x64 服务器
  • Windows + 微软.NET 4.5
  • 从不同线程读/写双精度
  • 最小的延迟(需要最小的延迟,因为我正在编写 HFT 软件)

No, Volatile不是原子的,并且在 SMP(>1 个处理器)系统中这样假设是不安全的。它在单处理器机器上是安全的。

除非你really需要性能,您可能想要Interlocked相反,要么Interlocked.Exchange or Interlocked.Read.

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

Volatile.Read / Volatile.Write 是“双”原子的吗? 的相关文章

  • 是否可以强制 XMLWriter 将元素写入单引号中?

    这是我的代码 var ptFirstName tboxFirstName Text writer WriteAttributeString first ptFirstName 请注意 即使我使用 ptFirstName 也会以双引号结束 p
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • 将数组向左或向右旋转一定数量的位置,复杂度为 o(n)

    我想编写一个程序 根据用户的输入 正 gt 负 include
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • C - 找到极限之间的所有友好数字

    首先是定义 一对友好的数字由两个不同的整数组成 其中 第一个整数的除数之和等于第二个整数 并且 第二个整数的除数之和等于第一个整数 完美数是等于其自身约数之和的数 我想做的是制作一个程序 询问用户一个下限和一个上限 然后向他 她提供这两个限
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 恢复上传文件控制

    我确实阅读了以下帖子 C 暂停 恢复上传 https stackoverflow com questions 1048330 pause resume upload in c 使用 HTTP 恢复上传 https stackoverflow

随机推荐

  • R 中的 REGEX:从字符串中提取单词

    我想这是一个常见的问题 我发现了很多网页 包括一些来自SO的网页 但我无法理解如何实现它 我是 REGEX 新手 我想在 R 中使用它来提取句子中的前几个单词 例如 如果我的句子是 z I love stack overflow it is
  • 使用 DownloadManager 在活动内显示下载进度

    我试图重现 DownloadManager 在我的应用程序内的通知栏中显示的相同进度 但我的进度从未发布 我正在尝试使用 runOnUiThread 更新它 但由于某种原因它没有更新 我的下载 String urlDownload http
  • UITableview 附件类型在滚动时消失

    我制作了一个 tableView 我需要在其中选择多个选项 选项已选择 但当我滚动表视图时 复选标记选项消失 其他一些行显示该复选标记 这是我的代码didselectedrowAtindex method table option is U
  • Chrome中textarea的默认字体样式是什么? (文本输入与文本区域的文本“大小”)

    Chrome中textarea的默认字体样式是什么 使它默认的样子应该是什么样的 我的问题的目的是我想让输入中的文本与文本区域中的文本相同 在文本输入中可能太 粗体 P问题应该是 文本区域应用的默认字体属性是什么 如果我想看起来像默认的那样
  • 如何打开内存中存储的 PDF

    我有一个应用程序 可以下载 PDF 文件并将其以 MODE PRIVATE 出于安全目的 存储在应用程序的内部存储器上 FileOutputStream fos getApplicationContext openFileOutput LO
  • 将自定义命令行参数传递给 Rust 测试

    我有一个 Rust 测试 它委托给 C 测试套件使用doctest并希望将命令行参数传递给它 我的第一次尝试是 in mod ffi pub fn run tests cli args mut String gt bool test fn
  • AutoMockContainer 支持具有非接口依赖项的自动模拟类

    我有一个具有非接口依赖性的构造函数 public MainWindowViewModel IWorkItemProvider workItemProvider WeekNavigatorViewModel weekNavigator 我正在
  • 如何更改禁用控件的样式?

    当 WinForm 元素被禁用时 它会变灰 是否可以禁用某个元素 但调整禁用的样式 使其看起来仍然启用 而不是灰显 防止可聚焦控件夺取焦点需要采取多种对策 您必须包含一个控件does此类的重点是抵制所有尝试 using System usi
  • python进程池,每个进程都有超时,而不是池中的所有进程

    我需要运行许多进程 但不是全部运行 例如同时运行 4 个进程 multiprocessing Pool正是我所需要的 但问题是 如果进程持续超过超时 例如 3 秒 我需要终止该进程 Pool仅支持等待所有进程的超时 而不是每个进程的超时 这
  • Acer Iconia A500 不在 adb 设备中

    刚刚拿起一台 Iconia A500 是的 优惠券优惠 100 美元 并开始玩游戏等 我决定终于到了工作的时候了 启动了 adb 并启动了 eclipse 来测试一个应用程序 我发现它不在我的设备列表中 我已经尝试安装 acer 驱动程序
  • 更改 ggplot2 中图例键中的符号

    此 R 代码生成一个 ggplot2 图表 其中图例键包含以红色 蓝色和绿色重复的字母 a x lt rnorm 9 y lt rnorm 9 s lt rep c F G K each 3 df lt data frame x y s r
  • 为什么atomic.StoreUint32比sync.Once中的普通分配更受欢迎?

    在阅读Go源码时 我对src sync once go中的代码有一个疑问 func o Once Do f func Note Here is an incorrect implementation of Do if atomic Comp
  • Newtonsoft JSON 动态属性名称

    有没有办法在序列化期间更改 Data 属性的名称 以便我可以在 WEB Api 中重用此类 例如 如果我要返回分页的用户列表 则数据属性应序列化为 用户 如果我要返回项目列表 则应称为 项目 等 这样的事情可能吗 public class
  • 使用 JavaCV 和 FFmpeg 播放视频

    所以 我正在为 Android 开发一个自定义视频播放器 但我需要播放的不仅仅是 Android 支持的视频文件 mp4 3gp like wmv avi flv 目前 我已经将任何视频类型转换为 mp4 并且可以在重新编码后播放它们 但我
  • 在 JBuilder 中生成嵌套 JSON 数组

    我在 ruby on Rails 中有这个模型 分支模型 has many menus class Branch lt ActiveRecord Base belongs to place belongs to city has many
  • 将字符串转换为 java.util.Stream

    有时我想对字符串中的每个字符做一些简单的事情 不幸的是 因为字符串是不可变的 所以除了循环字符串之外没有什么好的方法可以做到这一点 这可能非常冗长 如果您使用 Stream 它可以做得更短 只需一两行 有没有办法转换String into
  • 将linux 2.7上的python更新到3.5

    所以我使用这些指令更新了 python sudo apt get install build essential checkinstall sudo apt get install libreadline gplv2 dev libncur
  • 抛出异常时抛出异常

    这段代码 include
  • 如何检查Azure Blob存储上传是否成功?

    我使用 Azure SAS URL 将文件上传到 Blob 存储 var blockBlob new Microsoft WindowsAzure Storage Blob CloudBlockBlob new System Uri sas
  • Volatile.Read / Volatile.Write 是“双”原子的吗?

    MSDN 指出 其他类型的读取和写入 包括long ulong double and decimal以及用户定义的类型不需要是原子的 C 7 0 规范草案 变量 9 6 变量引用的原子性 Will Volatile Write Double