* 读者-写者问题的信号量解法 互斥关系分析 读者和写者不能同时进入共享数据区 多个写者不能同时进入共享数据区 多个读者可以同时进入共享数据区 同步关系分析 读者进入缓冲区,写者必须等待 写者进入缓冲区,读者必须等待 三种类型: 读者优先:一旦有读者进入,则后续读者均可进入 合理顺序:读者在先来的写者之后 写者优先:只要有写者等待,则后续读者必须等待 写--写互斥 读--写互斥 * 当读者进程到来时,三种情况: 1)无读者、写者:新读者可以读 2)有写者等待,但有其它读者正在读:新读者也可以读 3)有写者写:新读者等 当写者进程到来时,三种情况: 1)无读者、其他写者:新写者可以写 2)有读者:新写者等待 3)有其它写者:新写者等待 读--写互斥 读--写互斥 写--写互斥 读--写互斥 读--写互斥 写—写互斥: 互斥信号量Wmutex 怎样判断有没有读者在读? * 增加一个公共变量Readcount,表示当前有几个读者进程在读。 新来一个读者进程,Readcount加1; 撤销一个读者进程,Readcount减1; 第一个读者:阻塞所有写者进程;允许其他读者进程执行。 最后一个读者:唤醒可能的写者进程。 Readcount成为临界资源,必须互斥访问: 增加互斥信号量Rmutex * 采用信号量机制: 两种进程: Reader、Writer 两个信号量 Wmutex表示读者和
原创力文档

文档评论(0)