风落平川 2024-03-19 10:13 采纳率: 96.8%
浏览 9
已结题

操作系统相关算法中while();的含义

以P操作为例,
wait(S)
{
while(S<=0);
S--;
}
当S小于等于零时,do nothing,此时想访问临界资源的进程需要等待;直到S大于零时,若有申请访问临界资源的进程,则信号量减一。
这样理解对吗?

  • 写回答

18条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-03-19 10:14
    关注

    🌈🌈🌈参考通义千问和郭老师的小迷弟雅思莫了-编写提供🌈🌈🌈
    您可以参考如下,如果回答的不正确,及时评论区回复我,我会根据你错误描述追加回复,直到您满意为止。

    您的理解基本上是正确的。while循环中的条件判断会不断地检查信号量S的值,直到S大于0为止,这样可以保证在访问临界资源之前,所有申请访问该资源的进程都必须等待直到资源可用。

    以下是稍作修改过的代码示例:

    wait(S) {
        while(S <= 0) {
            // do nothing, wait for S to become greater than 0
        }
        S--;
    }
    

    在这个例子中,wait函数会一直循环检查信号量S的值,直到S大于0时才会执行S--操作。这样可以保证在访问临界资源之前,所有等待资源的进程都必须等待信号量S的值大于0。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(17条)

报告相同问题?

问题事件

  • 系统已结题 4月2日
  • 已采纳回答 3月25日
  • 创建了问题 3月19日