我正在阅读Abraham Silberschatz等人的教科书“操作系统概念”。我发现乳清几乎使用while(TRUE)循环来处理需要在Process Synchronization一章中同步的所有进程。其中一些对我有意义,例如用餐哲学家问题使用while(TRUE)循环因为哲学家需要一直“思考”,所以它的过程需要做一段时间(TRUE)循环来模仿这个。但其中一些对我没有意义。让我们以读写器问题为例,教科书中给出的示例代码将读取器和编写器进程放在while循环中。
为什么呢?为什么读者过程会在事后读取?为什么他们在阅读了想要阅读的内容后才完成/退出?根据我的理解,他们这样做是为了简单地模拟同时运行多个相同的进程吗?
// solution code of the textbook for first reader-writer problem
// writer process
do {
wait(wrt);
// writing is performed
signal(wrt);
}while(TRUE)
// reader process
do {
wait(mutex);
readCount++;
if(readCount==1)
wait(wrt);
signal(mutex);
//reading is performed
wait(mutex);
readCount--;
if(readCount==0)
singal(wrt);
signal(mutext);
}while(TRUE)
答案 0 :(得分:0)
使用while (true)
是一个好主意,表示一个无限循环(假设特定语言没有特殊的构造来表达无限循环),因为当从顶部读取源代码时,读者会立即被告知发生了什么。底部。
在读者/作者或消费者/制作人场景中使用无限外观也看起来合情合理。通常,一个软件(或其组件)被设计为重复执行某个任务。要了解在特定情况下选择无限循环的原因,需要对该场景有更详细的了解。