读者-写者问题
semaphore mutex = 1 //互斥信号量,其初值为1,用于使读进程互斥的访问共享变量readcount
semaphore wmutex = 1 //写互斥信号量,其初值为1,用于实现写进程与其他进程(包括读进程即其他写进程)的互斥
int readcount = 0 //共享变量,初值为0,用于记录当前正在读数据的读进程数目
reader()
{
while(true)
{
p(mutex)
if(readcount==0) p(wmutex)
readcount ++
v(mutex)
读数据
p(mutex)
readcount--
if(readcount==0) v(wmutex)
v(mutex)
}
}
writer()
{
while(true)
{
p(wmutex)
写数据
v(wmutex)
}
}