读者写者问题:
读者间可以同时访问资源
任一写者必须与其他写者或者读者互斥访问共享资源
分析:
写者与任一进程互斥访问共享资源
读者互斥访问readcount变量
写者
1申请对文件的使用权p(Wmutex)
2写文件
3释放对文件的使用权V(Wmutex)
读者
设正在读的读者个数 ReadCount初=0
1第一个读者来
申请对文件的使用权-------实现读者写者对文件资源的互斥
P(Wmutex)
2第二个读者来
申请对RC代码段的使用权-------------实现读者和读者对RC代码段的互斥
P(Rmutex)//申请对RC代码段的使用权
if(RC==0){//如果RC代码段是0
P(Wmutex);//申请对文件的使用权
写文件
RC++;
V(Rmutex)//释放对RC代码段的使用权
}else{//RC!=0时
读文件
P(Rmutex)
RC--;
if(RC==0){
V(Wmutex);//释放对文件的使用权
}else{
V(Rmutex)
}
信号量集机制---执行时引入多类资源
生产者引入empty mutex 消费者引入full mutex
思想:多类资源一起分配,一起释放,一个不满足,全部分配
解决p操作顺序不当,可能死锁
eg.SP(empty,mutex) SV(mutex,full)