down_read(),down_read_nested()和down_read_non_owner()之间的区别是什么

时间:2017-05-10 22:31:12

标签: c multithreading linux-kernel semaphore

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信号量的线程必须等待所有下行读者。那么,非所有者是否意味着允许向下写入?那么,这不安全。这就失去了拥有信号量的全部目的。

0 个答案:

没有答案