gpt4 book ai didi

deadlock - 并发处理-Petersons算法

转载 作者:行者123 更新时间:2023-12-02 04:09:31 25 4
gpt4 key购买 nike

对于那些不熟悉的人,以下是用于流程协调的Peterson算法:

int No_Of_Processes; // Number of processes
int turn; // Whose turn is it?
int interested[No_Of_Processes]; // All values initially FALSE

void enter_region(int process) {
int other; // number of the other process

other = 1 - process; // the opposite process
interested[process] = TRUE; // this process is interested
turn = process; // set flag
while(turn == process && interested[other] == TRUE); // wait
}

void leave_region(int process) {
interested[process] = FALSE; // process leaves critical region
}

我的问题是,该算法是否会引起死锁?

最佳答案

不,没有死锁的可能。
您唯一等待的地方是while循环。并且process变量不在线程之间共享,并且它们是不同的,但是turn变量是共享的。因此,不可能在每一刻都为一个以上的线程获取trueturn == process条件。
但是无论如何,您的解决方案根本不正确,Peterson的算法仅适用于两个并发线程,而不适用于代码中的任何No_Of_Processes
N进程的原始算法中,可能会出现link死锁。

关于deadlock - 并发处理-Petersons算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6008622/

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