“锁定”如何在保护关键部分的程序中工作?

时间:2016-02-16 06:38:40

标签: c locking

我目前正在研究锁,我对以下使用锁来保护代码的关键部分的示例感到困惑。

这是我的问题:

如果存款功能首先获得锁定,这是否意味着删除功能必须等待存款功能释放锁定才能执行其他操作?换句话说,删除将被锁定在锁定状态 - >获取直到存款功能锁定 - >释放? enter image description here

1 个答案:

答案 0 :(得分:1)

请注意,您有多个actor: lock ,用于调用lock操作,条件变量(名为notEmpty和{ {1}}),notFull 因为问题是关于锁定,响应是 - wait将进入函数或从等待条件中唤醒并尝试获取锁定 无论如何,如果remove函数正在使用它(也就是说它已锁定它,它已经获取它),deposit函数将挂起该锁,直到它被释放(或者,甚至更好) ,remove d)。 另请注意,当您在条件变量release时,锁定会在您唤醒后自动释放并重新获取。因此,该功能不是永远持有锁,就是这样。