gpt4 book ai didi

c# - Volatile.Read/Volatile.Write 是否为 "double"原子?

转载 作者:太空狗 更新时间:2023-10-29 21:23:37 25 4
gpt4 key购买 nike

MSDN 指出

long, ulong, double, and decimal, as well as user-defined types, are not guaranteed to be atomic 5.5 Atomicity of variable references

威尔Volatile.Write Method (Double%, Double)作为原子操作工作?如果是这样,这是如何保证的?

在一个线程中执行 Volatile.Write(ref mydouble, value); 并在另一个线程中执行 Volatile.Read(ref mydouble) 是否安全,其中 mydouble double 类型吗?

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

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

最佳答案

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

除非您真的需要性能,否则您可能需要InterlockedInterlocked.ExchangeInterlocked.Read.

关于c# - Volatile.Read/Volatile.Write 是否为 "double"原子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12435325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com