论坛首页 编程语言技术论坛

PV操作 读写问题

浏览 1686 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-03-14  
begin
  S,mutext : semaphore;
  S :=1; mutext :=1;
  rc : integer;
  rc := 0;
cobegin
  process Readeri(i=1,2,...,m)
  begin
    P(mutex); /* 测试能否使用计数器 rc*/
    rc := rc + 1;
    if rc = 1 then P(S);/* 第一个读者测试能否使用文件F */
    V(mutex); /* 归还计数器 rc 的使用权 */
    read file F;
    P(mutex); /* 测试能否使用计数器 rc */
    rc := rc -1;
    if rc = 0 then V(S);/*最后一个读者归还文件 F 的使用权 */
    V(mutex); /* 归还计数器 rc 使用权 */
  end;
  process Writerj(j=1,2,...,n)
  begin
    P(S);
    write file F;
    V(S);
  end;
coend;
end;

这段能满足下面的要求吗?
1.多个进程可以同时读文件F
2.任何一个进程在对文件F进行修改时,不允许其他进程对文件F进行修改或读
3.当有进程在读文件F时,不允许任何进程去修改文件F
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics