gpt4 book ai didi

c# - 使用 Interlocked 测试并有条件地更新一个 long

转载 作者:行者123 更新时间:2023-11-30 21:13:49 24 4
gpt4 key购买 nike

使用 Interlocked 类是否有一种巧妙的方法来做到这一点?或者我应该只使用 lock { }

我的具体用例是我有多个线程计算一个 long 值,并将其与共享的“最大值”进行比较,仅当本地值较大时才替换共享值。

最佳答案

试试 Interlocked.CompareExchange方法。我没试过,但对我来说,这样的事情似乎合乎逻辑:

long localMax = Interlocked.Read(ref max);
while (value > localMax) {
Interlocked.CompareExchange(ref max, value, localMax);
localMax = Interlocked.Read(ref max);
}

像往常一样,对您的代码进行压力测试以尝试发现并发问题。

关于c# - 使用 Interlocked 测试并有条件地更新一个 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6625334/

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