【问题标题】:What should I use spin lock or mutex if conflict doesn't occur often如果冲突不经常发生,我应该使用什么自旋锁或互斥锁
【发布时间】:2016-12-02 12:41:02
【问题描述】:

我正在修复一个与同时访问一个库中的集合相关的错误。当前库使用 Mutex(lock) 来控制来自多个线程的访问。代码中的锁定区域包含应该很快执行的代码(修改列表/字典或从中读取),因此自旋锁似乎与这种情况相匹配。

但是... 在大多数情况下,锁定是不必要的,因为使用这个库的大多数应用程序都是单线程的,对我来说不要减慢它们的速度很重要。 我的幼稚基准表明自旋锁检查资源未使用的速度较慢,但​​我并不完全信任它。

【问题讨论】:

    标签: .net mutex spinlock


    【解决方案1】:

    如果您将此功能宣传为线程安全,那么您应该提供对集合更新的锁定。

    如果不是,请务必记录事实并将其留给消费者。

    【讨论】:

    • 问题是自旋锁是否不会比普通锁更影响性能。函数应该是线程安全的,因为有些客户(尤其是我)在多线程环境中使用它。
    猜你喜欢
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2014-09-20
    • 1970-01-01
    • 2018-11-15
    相关资源
    最近更新 更多