【发布时间】:2016-12-02 12:41:02
【问题描述】:
我正在修复一个与同时访问一个库中的集合相关的错误。当前库使用 Mutex(lock) 来控制来自多个线程的访问。代码中的锁定区域包含应该很快执行的代码(修改列表/字典或从中读取),因此自旋锁似乎与这种情况相匹配。
但是... 在大多数情况下,锁定是不必要的,因为使用这个库的大多数应用程序都是单线程的,对我来说不要减慢它们的速度很重要。 我的幼稚基准表明自旋锁检查资源未使用的速度较慢,但我并不完全信任它。
【问题讨论】:
我正在修复一个与同时访问一个库中的集合相关的错误。当前库使用 Mutex(lock) 来控制来自多个线程的访问。代码中的锁定区域包含应该很快执行的代码(修改列表/字典或从中读取),因此自旋锁似乎与这种情况相匹配。
但是... 在大多数情况下,锁定是不必要的,因为使用这个库的大多数应用程序都是单线程的,对我来说不要减慢它们的速度很重要。 我的幼稚基准表明自旋锁检查资源未使用的速度较慢,但我并不完全信任它。
【问题讨论】:
如果您将此功能宣传为线程安全,那么您应该提供对集合更新的锁定。
如果不是,请务必记录事实并将其留给消费者。
【讨论】: