gpt4 book ai didi

临界区概率 while 循环

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

好的,我正在阅读加尔文第六版的临界区问题。问题是,问题中使用的算法有一个 while 循环:

do
{
while(turn!=i);
critical section
turn=j;
remainder section
}while(1);

最初 turn==0 并且 i=0,进程 p0 运行它的关键问题。对于这种特殊情况,while(turn!=i); 的计算结果为 while(false)

现在我的问题是,如果 while 循环的计算结果为 false,那么接下来的关键部分是如何计算的。愚蠢的部分来了,如果出于任何原因 while(turn!=i); 有一个分号,那么以下语句对 while 循环不起作用!那么,这里的 while 循环有什么用!? :|

最佳答案

在这种情况下,while 循环要么无限循环,要么什么都不做。带有分号的 while 循环指定它应该尝试循环,但在 while block 中没有执行任何指令。编写 while (1); 等同于 while (1) {}

这种语法的一个常见用法是当您只想迭代时,比方说,直到字符串的末尾,以进一步工作。你会写类似的东西

char *work_on_end_of_string(char *str) {
int i = 0;

while (str[i++]);
// now str[i] is pointing on the end of the string
}

在您的情况下,正如您提到的您的程序是多线程的,turni 在执行临界区之前似乎需要有所不同。 while 语句启用循环测试此条件,直到线程修改其中一个以满足它。

关于临界区概率 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12871509/

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