私はそのような構成を使用しています:
- .NET Framework 4.5
- Windows Server 2008 R2
- HP DL360p Gen8(2 * Xeon E5-2640、x64)
私は私のプログラムのどこかにそのようなフィールドを持っています:
protected int HedgeVolume;
いくつかのスレッドからこのフィールドにアクセスします。私はマルチプロセッサシステムを使用しているため、このスレッドが異なるプロセッサで実行されている可能性があると思います。
このフィールドを使用するときはいつでも、最新の値が「読み取り」であることを保証するにはどうすればよいですか?そして、値を「書き込む」ときに、他のすべてのスレッドですぐに使用できるようにするために?
私は何をすべきか?
- フィールドはそのままにしておきます。
- それを宣言する
volatile
- クラスを使用
Interlocked
してフィールドにアクセスする - .NET 4.5
Volatile.Read
、Volatile.Write
フィールドにアクセスするためのメソッドを使用します - 使用する
lock
この構成でプログラムを動作させるための最も簡単な方法が必要なだけです。別のコンピューター、サーバー、またはオペレーティングシステムでプログラムを動作させる必要はありません。また、待ち時間を最小限に抑えたいので、この標準構成(multiprocessor intel x64、.net 4.5)で常に機能する最速のソリューションを探しています。