为何线程互斥锁优于读写锁

尽管确实是在读多写少的情况下使用,但系统在测试中确实出现线程互斥锁优于读写锁的情况,

muduo库中给出了多种互斥锁优于读写锁的原因:

1. 读锁加锁的开销不会比mutex小,因为它需要更新当前reader的数目,如果临界区很小,那么mutex往往更快。

实际上mutex是由整形变量及等待队列构成

2. 读锁可能提升为写锁,增大调试难度

实际上系统调试过程中的确出现过这样的问题,甚至导致死锁,当时是以这样顺序调用的:

写申请(获得写锁)->读申请(读申请被忽略)->释放(实际把写锁释放)->释放(实际获得读锁)->下次的写申请(卡死)

3. 写锁会阻塞后面的读锁,在要求读低延迟的情况下使用并不适当。

这条完全不明白。

至于spinlock与互斥锁的使用对比在这篇文章《Pthreads mutex vs Pthreads spinlock》介绍得十分清楚。

 

打赏作者
提交看法

抢沙发

还没有评论,你可以来抢沙发