操作系统-链表的互斥体

时间:2019-03-07 01:50:30

标签: locking

在课堂上,我的老师详细说明了代码中关键部分的数量所需的锁数。假设链接列表包含操作addNode(), deleteNode(), size()++, size()--。这两个过程需要多少个锁。一两个?

在课堂上,老师像这样包装代码:

过程1

getLock(lock1)

 deleteNode()

 getLock(lock2)
    size()--
 releaseLock(lock2)

releaseLock(lock1)

过程2

getLock(lock1)

 addNode()

 getLock(lock2)
    size()++
 releaseLock(lock2)

releaseLock(lock1)

这里真的需要两个锁吗?我认为锁2是不必要的,因为它已经在锁周围了。

0 个答案:

没有答案