为什么Interlocked.Exchange不支持布尔类型?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

为什么Interlocked.Exchange不支持布尔类型?

提问于
用户回答回答于

Interlocked方法的实现需要处理器级别的低级支持。

用户回答回答于

不回答这个问题,但作为一种解决方法,可以像C一样使用int而不是bool。

    int m_IsFirstTime = 1; // 1 means true 0 means false. 

    void SomeMethod()
    {
        if (1 == Interlocked.Exchange(ref m_IsFirstTime , 0))
            // Do something for the first time.

        else
            // Do something for all other times.

    }

扫码关注云+社区