multithreading - TOmniMREW是否有较少的CPU密集型替代方案?

标签 multithreading locking omnithreadlibrary

我正在使用类似于TOmniMREW的细长型Single-Read Multi-Write锁,但是在争用的情况下,CPU占用较少。

TOmniREW仅使用自旋锁,因此线程将在获得锁之前飙升至100%的CPU使用率。

当前,我正在使用关键部分,尽管它的行为效率较低(我的读者多于作家),但如果争用线程放弃了他们的CPU时间。

就我而言,争用很少发生,通常是在编写器触发更复杂的(冗长的)操作时发生的,但在这种情况下,自旋锁的CPU使用率急剧上升。

Windows的SRW implementation使用类似的策略,没有帮助(编辑:实际上在某些竞争激烈的情况下大约快2-3倍,但仍然存在问题 edit 2: TOmniMREW在以下版本可用时将使用SRW future 的版本,因此速度将相同)。

最佳答案

实际上,在进行了更多测试之后,似乎Windows SRW确实放弃了CPU,这样做的时间比我在“关键部分”测试中看到的要多。

因此,Windows SRW是答案。

关于multithreading - TOmniMREW是否有较少的CPU密集型替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20070977/

相关文章:

Java:线程,如何让它们都做某事

c# - 在 C# 中锁定静态方法

带表锁定的 Mysql 事务

c# - 多任务调度导致死锁

multithreading - OpenCV 图像上的 Python 多处理

c++ - 同时修改 std::valarray<T> 的元素是否安全?

delphi - 将 TStringList 传递给 TOmniTask 过程

multithreading - Delphi 2010 中其他线程的执行点

java - 如何为 android 的连接 json 调用创建线程