我使用boost::shared_mutex
作为Writer-Readers模型中的同步对象。然而,与没有使用的锁相比,速度相当慢(在我的测试中:没有任何读卡器,要写500,000个值,如果不使用锁,需要100毫秒,如果使用boost::shared_mutex
,则需要约500毫秒)。这就是为什么我决定考虑类似自旋锁的原因。我想制作一个便携式自旋锁(Windows + Linux)。Portable Writer -Readers自旋锁
- 是否有任何可以立即使用的提升包装?
- This是一个很好的话题,展示了如何在Windows上实现螺旋锁。但我无法找到在Linux上的Win32 APIs的等效物,例如
InterlockedCompareExchange
,YieldProcessor
,InterlockedDecrement
。
更新2016年3月8日
我发现了一个guide和被Facebook在GitHub上发布了implementation。还没有尝试过。我在这里更新了任何有同样问题并可能想参考的人。
如果您的作者多于读者,则使用共享互斥是愚蠢的。它们适用于您希望快速读取读写速度的情况,以减少相对较少的写入操作为代价。尝试使用普通的互斥体。 –
@DavidSchwartz我只有1位作家和16位读者。 –
那你为什么不介意它没有读者呢? –