gpt4 book ai didi

deadlock - 防止死锁

转载 作者:行者123 更新时间:2023-12-02 01:18:31 27 4
gpt4 key购买 nike

对于像这样的伪函数

void transaction(Account from, Account to, double amount){
Semaphore lock1, lock2;
lock1 = getLock(from);
lock2 = getLock(to)

wait(lock1);
wait(lock2);

withdraw(from, amount);
deposit(to, amount);

signal(lock2);
signal(lock1);
}

如果运行事务(A,B,50)事务(B,A,10),则会发生死锁

如何防止这种情况发生?

这行得通吗?

最佳答案

处理锁时一个简单的死锁预防策略是对应用程序中的锁有严格的顺序,并始终按照这个顺序来抓取锁。假设所有帐户都有一个号码,您可以更改逻辑以始终首先获取帐号最小的帐户的锁。然后获取编号最大的锁。

防止死锁的另一个策略是减少锁的数量。在这种情况下,最好使用一个锁来锁定所有帐户。这肯定会使锁的结构变得更加简单。如果应用程序在重负载下显示出性能问题,并且分析显示锁拥塞是问题所在 - 那么是时候发明更细粒度的锁定策略了。

关于deadlock - 防止死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6987906/

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