【发布时间】:2017-02-15 03:04:33
【问题描述】:
我正在尝试构建一个层次锁定系统以避免死锁。这意味着将代码分解为层(或级别),并在每个级别仅允许锁定下一个级别。在同一级别内,您应该使用预定义的顺序锁定。这可以防止大多数死锁。 像这样http://www.drdobbs.com/parallel/use-lock-hierarchies-to-avoid-deadlock/204801163?pgno=1
对于互斥锁,这就像一个魅力,但对于读写锁,它会失败。例如,如果我拿了一个读锁,然后想把它变成写锁,这意味着我在同一级别上拿了一个新锁,这是这个算法所禁止的。
如何更改算法以适用于 RW 和互斥锁?我应该考虑其他一些算法吗?
PS:我正在编写 C++,但这个问题实际上也与理论问题相关
【问题讨论】:
-
读写锁是什么意思?
-
你能把问题编辑成独立的吗?如果该链接中断,那么它将留下一个不再可以理解的问题。一口气读完也会提高题型。
-
我添加了,但是层次锁定是一种已知算法,所以应该没有问题
-
@Jackson,读写锁与您在答案中描述的完全一样,读锁是多个线程可以持有的共享锁。当你写 lock 它时,你会等待,这样读者就会完成并获得一个独占锁
标签: multithreading concurrency