【问题标题】:Unsigned Interlocked Reads无符号互锁读取
【发布时间】:2011-06-02 08:58:13
【问题描述】:

Interlocked.Read() 仅针对 Int64 而不是针对 UInt64 定义的原因是什么?我不会想到这两种类型之间有任何区别。

【问题讨论】:

    标签: c# multithreading unsigned interlocked


    【解决方案1】:

    Interlocked 类在 mscorlib 中定义,即 CLS-CompliantUInt32UInt64 无论好坏,都不符合 CLS。

    至于为什么它们不符合 CLS,请参阅这篇 SO 文章:

    【讨论】:

    • CLS 合规性似乎是不为无符号变量定义互锁操作的愚蠢理由。 CLS 合规性的目的是确保没有某些可选功能的语言不会被排除在使用对它们有用的库函数之外,如果它们的定义不同的话。接受无符号参数的 CompareExchange 重载对那些具有无符号类型的语言很有用,而对那些没有它的语言则无用,但以这种方式定义重载不会损害任何 在其他情况下有用的东西的有用性这样的语言。
    猜你喜欢
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    相关资源
    最近更新 更多