【发布时间】:2011-10-29 08:02:42
【问题描述】:
我有一个非常简单的操作需要原子完成:
if (a > b)
b = a
其中 a 和 b 是整数
编辑:并且 a 是本地的。
在 C# 中有没有快速的方法来做到这一点?如果可能的话,我想避免手动锁定。我查看了 Interlocked.CompareExchange,但据我了解,这仅测试相等性。
谢谢!
【问题讨论】:
-
@vcsjones:有趣的文章,谢谢。但是,在我的情况下, b 仅在上述情况下才被写入。我认为 Interlocked 类型的方法在这里是合适的。
-
@dcrooney - 互锁可能是合适的,您会看到用于解决它的解决方案(循环中的 CompareExchange)是 Henning Makholm 的答案。
-
@Brian Gideon :看起来不太相似,这是我们有一个局部变量,没有多个线程访问它
标签: c# .net multithreading synchronization atomic