8

MSDN は次のように述べています。

long、ulong、double、および decimal は、ユーザー定義型と同様に、アトミックであることが保証されていません 5.5 変数参照のアトミック性

Volatile.Write Method (Double%, Double)アトミック操作として機能しますか? もしそうなら、これはどのように保証されますか?

あるスレッドと、型を持つ別のVolatile.Write(ref mydouble, value);スレッドで安全に実行できますか?Volatile.Read(ref mydouble)mydoubledouble

以上、一般質問でした。別の質問 - この特定の状況で何をすべきか:

  • 2 プロセッサ Xeon x64 サーバー
  • Windows + MS .NET 4.5
  • 異なるスレッドから double を読み書きする
  • SMALLEST レイテンシ (私は HFT ソフトウェアを書いているので最小にする必要があります)
4

1 に答える 1

8

いいえ、Volatile はアトミックではなく、SMP (>1 プロセッサ) システムでそう仮定するのは安全ではありません。ユニプロセッサ マシンでは安全です。

パフォーマンスが本当に必要でない限り、Interlocked代わりにInterlocked.ExchangeまたはInterlocked.Read.

于 2012-09-15T07:30:09.140 に答える