最初のリーダー/ライターの問題が書き込みプロセスを枯渇させる理由を理解するのに苦労しています。つまり、コードはどのようにしてリーダープロセスに優先順位を付けますか? リーダー プロセスの 1 つが実行するときに、ライター プロセスがロックを取得できないようにする必要がありsignal(wrt)
ますか? セマフォのリストが構成されているということですか (LIFO リスト内のリーダー プロセスの安定したストリームによってライターがどのように飢えているかがわかります)、リーダー プロセスに優先順位を与える方法ですか、それともここで何か基本的なことを誤解していますか?
semaphore wrt=1,mutex=1;
readcount=0;
writer()
{
wait(wrt);
//writing is done
signal(wrt);
}
reader()
{
wait(mutex);
readcount++;
if(readcount==1)
wait(wrt);
signal(mutex);
///Do the Reading
///(Critical Section Area)
wait(mutex);
readcount--;
if(readcount==0)
signal(wrt);
signal(mutex);
}