读/写问题
:有一个多进程共享的数据区,这个数据区可以是一个文件或者主存的一块空间。有一些只读取这个数据区的进程(
reader
)和一些只往数据区中写数据的进程(
writer
)。此外还必须满足以下条件:
1.
任意多的读进程可以同时读这个数据区;
2.
一次只有一个写进程可以往数据区中写;
3.
若一个写进程正在写,禁止任何进程读。
l
计数器
readcount
:记录同时读的读者数,初值为
0
。
l
读互斥
信号量
rmutex
:使读者互斥地访问共享变量
readcount
,初值为
1
。
l
写互斥信号量
wmutex
:
实现读写互斥和写写互斥地访问共享文件,初值为1。