一个简单的关于进程同步的问题,我实在没地方问了。

musicfans 2008-03-17 02:26:25
两个并发的进程,大概是这样
Var mutex:semaphore:=1;
begin
parbegin
process 1:begin
repeat
wait(mutex);
critical section
signal(mutex);
remainder section
until false;
end

process 2:begin
repeat
wait(mutex);
critical section
signal(mutex);
remainder section
until false;
end
parend
我就有件事不明白,为什么加上repeat...until false阿?这是指死循环阿,难道一旦执行1个进程,就需要不断的循环执行吗?应该不会这样啊,比如读者进程和写者进程,我觉得来1个读者顺序执行
wait(mutex);
critical section
signal(mutex);
remainder section
就可以了
再来一个读者,才会再次进入,执行
wait(mutex);
critical section
signal(mutex);
remainder section
可是为什么操作系统的教程上在进程里面总是要加上repeat...until false呢?
...全文
64 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
独孤过儿 2008-03-17
  • 打赏
  • 举报
回复
因为进程的终结是由操作系统来管理的,而不是由应用程序说了算。所以程序的结尾是一个永真的循环
qmm161 2008-03-17
  • 打赏
  • 举报
回复
进程当然是无限循环的,要不然每次都要重新建立线程多麻烦!

同步的话不是有wait(mutex)么?
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-17 02:26
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下