假设我有共享double
变量。线程A
每秒更新数千次。在另一个线程B
中,每次发生这种情况时,我都希望以某种方式收到有关“更新”的通知。
我试图完全避免通知,只使用while(true)
循环,但这给我的程序无锁计算带来了显着的减速:如何对其他线程正在改变的 N 个双数求和?可能是因为“同时你不断地从内存中加载同一个数组,这对性能来说并不是很好,因为内存带宽是有限的。”
我也尝试过使用Monitor
class 但它也很慢,而且我看到Monitor.TryEnter
return时延迟高达 1-2 毫秒false
。
我现在认为我需要使用无锁技术进行通知,可能使用SpinLock
或其他方式?