gpt4 book ai didi

c - "locks"在保护临界区的程序中是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:14 26 4
gpt4 key购买 nike

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

这是我的问题:

如果 Deposit 函数首先获取锁,这是否意味着 Remove 函数必须等待 Deposit 函数释放锁才能执行其他操作?换句话说,Remove 会卡在 lock->acquire 直到 Deposit 函数锁定->release 吗? enter image description here

最佳答案

请注意,您有多个参与者:lock,在其上调用 lock 操作,以及条件变量(名为 notEmpty notFull),等待
因为问题是关于锁的,所以回答是 - yes
remove 将进入函数或从等待状态中唤醒并尝试获取锁。
无论如何,如果 deposit 函数正在使用它(也就是说,它有一个锁,它已经获得了它),remove 函数将卡在那个锁上,直到它被释放(或者,更好的是,released)。另请注意,当您等待 条件变量 时,锁会自动释放并在您醒来后重新获取。因此,函数不会永远持有锁,仅此而已。

关于c - "locks"在保护临界区的程序中是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35425453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com