正在加载图片...
汉下Frmt: 森 R, W: semaphore define start-read. end-read. start-writer end-writer 万 use wait, signal, check, release procedure start-read 法 begin procedure start-write; beg in 实 check (IM) check(IM) if wc>0 then wait(R, IM) WC wc +1. 现 rc rc 1 if rc>0 or wc>1 signal(R, IM) then wait(W, IM) 读者 re lease (IM) release (IM) end end rocedure end-read procedure end-write begin begin 写者 check(IM) check(IM) wC wC-1 if rc=0 then signal (W, IM); if wc>0 then signal (W, I M) release (IM) else signal(R, IM) end release(IM) 题 end begin rc: =0; WC: =0;R: =0; W: =0; end;汉森方法实现读者写者问题 TYPE read-writer = MONITOR var rc, wc : integer; R, W : semaphore; define start-read, end-read, start-writer, end-writer; use wait, signal, check, release; procedure start-read; begin check(IM); if wc>0 then wait(R,IM); rc := rc + 1; signal(R, IM); release(IM); end; procedure end-read; begin check(IM); rc := rc - 1; if rc=0 then signal(W,IM); release(IM); end; procedure start-write; begin check(IM); wc := wc + 1; if rc>0 or wc>1 then wait(W,IM); release(IM); end; procedure end-write; begin check(IM); wc := wc - 1; if wc>0 then signal(W,IM); else signal(R, IM); release(IM); end; begin rc := 0; wc := 0; R := 0; W := 0; end;
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有