为什么他们总是在进程同步章节中使用while(true)循环?

时间:2013-05-13 15:10:40

标签: multithreading process synchronization operating-system

我正在阅读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)

1 个答案:

答案 0 :(得分:0)

使用while (true)是一个好主意,表示一个无限循环(假设特定语言没有特殊的构造来表达无限循环),因为当从顶部读取源代码时,读者会立即被告知发生了什么。底部。

在读者/作者或消费者/制作人场景中使用无限外观也看起来合情合理。通常,一个软件(或其组件)被设计为重复执行某个任务。要了解在特定情况下选择无限循环的原因,需要对该场景有更详细的了解。