【发布时间】:2011-05-28 22:34:49
【问题描述】:
.NET 团队决定在 Interlocked.Exchange 操作中不支持布尔值有什么实际原因吗?
其中一个使用示例是当您想要保证某些代码只执行一次并且您想要为此使用布尔标志时。
【问题讨论】:
-
您当然可以只使用
int和if(Interlocked.CompareExchange(ref value, 1, 0)==0) {...}- 当然不能回答为什么...或者更简单 -Lazy<T>: @ 987654321@ -
问得好,这些年来已经多次向微软报告过这个问题。除了疏忽之外,我自己还没有看到令人满意的理由。如果有人知道,请告诉我们!
-
如果您需要对布尔值的联锁支持,您可以使用我的 InterlockedBoolean.cs 实现
标签: c# .net multithreading