递归锁

时间:2012-01-04 00:55:04

标签: data-structures

是否存在递归锁的用例?是否存在绝对需要递归锁定的场景。

似乎使用复杂且危险。我可以看到我们可以避免死锁(假设锁堆栈没有溢出)但我们不想捕获这些问题。

也许我在这里遗漏了一些东西。任何指针都表示赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:2)

我喜欢此博客条目的标题:

Recursive locks will kill you

我也喜欢这句话:

  

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:库的调用路径和数据依赖性分析。但   出于同样的原因,请记住,直到你没有完成   他们都走了,所以你可以创建一个你引以为荣的图书馆   不会不必要地反对整个并发性   应用