Linux内核中down_read()
,down_read_nested()
和down_read_non_owner()
之间有什么区别?
我试图在网上搜索,但除了迷茫的对话之外我找不到好的描述。源代码本身没有适当的注释。
我的问题与Linux内核中的rw_semaphore有关。以下是包含所有这些功能的文件的链接:http://elixir.free-electrons.com/linux/v2.6.38.8/source/kernel/rwsem.c
我有具体问题:
嵌套版本是否与允许线程多次读取信号量相关?嗯,没有必要这样做。线程可以使用普通读取版本执行该操作,只要它读取的次数相同即可。 它的用途是什么?它与普通版有什么不同?
非所有者版本甚至意味着什么?据我所知,读锁并不意味着信号量归锁定进程所有。它只是防止写锁。打算down_write
信号量的线程必须等待所有下行读者。那么,非所有者是否意味着允许向下写入?那么,这不安全。这就失去了拥有信号量的全部目的。