double
変数を共有しているとします。スレッドA
は、毎秒数千回更新します。別のスレッドB
では、これが発生するたびに「更新」について何らかの形で通知したいと考えています。
通知を完全に回避してwhile(true)
ループのみを使用しようとしましたが、これによりプログラムのロックフリー計算が大幅に遅くなりました: 他のスレッドによって変更されている N 個の倍精度数を合計する方法は? おそらく、「その間、同じ配列をメモリから何度もロードし続けますが、メモリ帯域幅が限られているため、パフォーマンスにはあまり適していません。」
classも使用しMonitor
てみましたが、かなり遅く、Monitor.TryEnter
returnのときに最大 1 ~ 2 ミリ秒の遅延が見られましたfalse
。
ロックフリーのテクニックを使用して通知を行う必要があると思います。おそらくSpinLock
または何か他のものを使用していますか?