我正在阅读 Abraham Silberschatz 等人的教科书操作系统概念。我发现乳清几乎在进程同步一章中对所有需要同步的进程使用了 while(TRUE) 循环。其中一些对我来说很有意义,例如用餐哲学家问题使用 while(TRUE) 循环,因为哲学家需要一直“思考”,所以它的过程需要做一个 while(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)