为什么rwlock比linux内核中的seqlock更受欢迎? [关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么rwlock比linux内核中的seqlock更受欢迎? [关闭]相关的知识,希望对你有一定的参考价值。
在阅读了Robert Love的LKD之后,我学习了rwlock和seqlock,它们都基于自旋锁。
当区分读写器时,rwlock优于自旋锁,它将获得更好的性能。但是,rwlock会让作家感到饥饿。
seqlock解决rwlock使编写器遇到问题,但是,使用seqlock比使用rwlock要少。那么,为什么rwlock比seqlock更受欢迎?
答案
seqlock有一个很大的局限性,读者应该正确处理不一致的数据。
并非每种处理算法都允许不一致的数据。在大多数情况下,这样的数据只能是数字:整数,布尔值等。它们很少可以是指针,因为过时的指针可能指向已经释放的内存,因此解除引用这样的指针是禁忌。
锁(以及它们之间的rw-locks)没有“不一致的数据”限制,因此可以在更多情况下使用它们。
Example of inconstisten data under seqlock
假设有两个结构的字段受单个seqlock保护。第一个字段a
按每个“写入”递增,第二个字段b
按每个“写入”递减。这两个领域最初都是0
。
可以假设,读者总是会发现a + b
是0
。
但是在seqlock的情况下,这不是真的。例如,在阅读a
和b
之间它可能是“写”,所以a
值将是旧的,b
值将是新的,而a + b
给出-1
。
以上是关于为什么rwlock比linux内核中的seqlock更受欢迎? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章