是否有递归锁的用例?是否存在绝对需要递归锁的场景。
使用起来似乎很复杂且危险。我可以看到我们可以避免死锁(只要锁堆栈不溢出),但我们不想捕获这样的问题吗?
也许我在这里遗漏了一些东西。任何指示表示赞赏。
提前致谢。
我喜欢这个博客条目的标题:
\n\n\n\n我也喜欢这句话:
\n\n\n\n\nhttp://www.thinkingparallel.com/2006/09/27/recursive-locks-a-blessing-or-a-curse/
\n\n不要\xe2\x80\x99t 使用递归互斥体。它\xe2\x80\x99类似于使用用过的避孕套进行性行为。
\n
最后,这是一篇非常有趣的文章,介绍了递归锁最初是如何进入 Posix pthread 的:
\n\n\n\nhttp://groups.google.com/group/comp.programming.threads/msg/d835f2f6ef8aed99?hl=en&pli=1
\n\n递归互斥锁是一种黑客手段。使用它们并没有什么问题,但它们是一个拐杖。腿断了还是图书馆断了?好吧,使用拐杖。但至少要知道你正在使用拐杖,以及为什么;并偶尔检查一下腿(或图书馆),以确保您仍然需要拐杖。如果没有痊愈,就去看医生,因为那是不行的。当你别无选择时,使用拐杖并没有什么可耻的……但是你不能依靠拐杖跑得很好,而且你也会减慢任何依赖你的人的速度。
\n\n递归互斥体是在现有库中构建线程支持原型的绝佳工具,正是因为它可以让您推迟困难部分:库的调用路径和数据依赖性分析。但出于同样的原因,请永远记住,直到它们全部消失之前,您才完成工作,因此您可以创建一个令您引以为傲的库,而不会不必要地限制整个应用程序的并发性。
\n