gpt4 book ai didi

c++ - 3个过程的严格交替

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

嗯,最近在学习操作系统概念的同时,也开始学习Strict Alternation。为了减少竞争条件的机会并处理两个过程,我们这样做:

进程 0:

While (TRUE) {

while (turn != 0); // wait
critical_section();
turn = 1;
noncritical_section();}

}

过程 1:

While (TRUE) {

while (turn != 1); // wait
critical_section();
turn = 0;
noncritical_section();

}

但我想知道如何处理 3 个过程以进一步减少赛车状况?

我的做法是:进程 0:

while (turn != 0 && turn != 2); // wait
critical_section();
turn = 1;
noncritical_section();}

过程 1:

while (turn != 1 && turn != 0); // wait
critical_section();
turn = 2;
noncritical_section();}

过程 3:

while (turn != 1 && turn != 2); // wait
critical_section();
turn = 0;
noncritical_section();}

我的方法可以吗?你们有什么建议?还有更好的东西吗?

谢谢

最佳答案

对于您所拥有的,它不一定会严格交替,例如,它可以进入 turn = 0 并且可以跟随 turn = 1 或 turn = 2 代码。我的建议是使用操作系统级别的事件,每个代码路径一个,每个进程触发后面的事件。

关于c++ - 3个过程的严格交替,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47657821/

24 4 0
文章推荐: python - 为什么打印结果与功能不同
文章推荐: Java 类型 i18n (java)
文章推荐: html - 让两个
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com