【发布时间】:2012-03-21 06:55:30
【问题描述】:
学习操作系统的基本概念时,我在高级编程语言中的关键区域构造主题下发现了这段代码。这是 Hoare 在 1973 年给出的。我在网上搜索但找不到与此相关的任何参考资料。我的疑问是,为什么有两个队列:第一个延迟和第二个延迟?只有一个队列可以完成这项工作吗?
构造:
region x when (B) S;
每个共享变量都关联以下变量:
semaphore mutex, first-delay, second-delay;
int first-count, second-count;
信号量互斥量初始化为1;信号量第一延迟 和 second-delay 初始化为 0。整数 first-count 和 second- count 被初始化为 0
代码:
wait (mutex) ;
while (!B) {
first-count++;
if (second-count > 0)
signal (second-delay) ;
else
signal (mutex) ;
wait (first-delay) ;
first-count--;
second-count++ ;
if (first-count > 0)
signal (first-delay) ;
else
signal(second-delay);
wait (second-delay) ;
second-count-- ;
}
S:
if (first-count > 0)
signal (first-delay) ;
else if (second-count > 0)
signal( second-delay) ;
else
signal(mutex);
【问题讨论】:
标签: process queue mutex semaphore monitor