是否存在递归锁的用例?是否存在绝对需要递归锁定的场景。
似乎使用复杂且危险。我可以看到我们可以避免死锁(假设锁堆栈没有溢出)但我们不想捕获这些问题。
也许我在这里遗漏了一些东西。任何指针都表示赞赏。
提前致谢。
答案 0 :(得分:2)
我喜欢此博客条目的标题:
我也喜欢这句话:
http://www.thinkingparallel.com/2006/09/27/recursive-locks-a-blessing-or-a-curse/
不要使用递归互斥锁。它类似于使用避孕套的性别。
最后,这是一篇非常有趣的文章,关于递归锁如何进入Posix pthreads:
http://groups.google.com/group/comp.programming.threads/msg/d835f2f6ef8aed99?hl=en&pli=1
递归互斥体是一种黑客攻击。使用它们没有错, 但他们是一个拐杖。腿部或图书馆坏了吗?很好,使用 拐杖。但至少要知道你正在使用拐杖,为什么;和 偶尔检查腿(或图书馆),以确保你仍然 需要拐杖。如果它没有愈合,去看医生,因为 那不行。当你别无选择时,使用起来并不羞耻 拐杖......但你不能在拐杖上跑得很好,你也会 放慢任何依赖你的人的速度。
递归互斥体可以成为原型化线程支持的绝佳工具 在一个现有的库中,正是因为它让你推迟了 part:库的调用路径和数据依赖性分析。但 出于同样的原因,请记住,直到你没有完成 他们都走了,所以你可以创建一个你引以为荣的图书馆 不会不必要地反对整个并发性 应用