读写者的四种优先调度方式
来源:互联网 发布:股票日记软件 编辑:程序博客网 时间:2024/06/08 12:35
读写者是一个著名的问题:
一个黑板,读者可以读取黑板上的东西,写者可以向黑板上写东西.并且有如下规则:
1.可以有多个读者同时读取黑板上的数据
2.只能有一个写者在黑板上写东西.
3.读者和写者不能同时操作黑板,即读写不能同时发生.
读者优先方法:
读者队列和写者队列,读者和写者抢夺黑板的控制权.每当读者获得黑板控制权以后就会将写者阻塞在黄线上,并且连续到来的读者可以畅通无阻的读取黑板上的数据.
而当写者获得控制权后只能用于自己,自己操作完黑板后,后续写者还是要和到来的读者竞争.这样就会造成读者优先享有黑板控制权.准确的说读者会一次获得,直到上一个读者读完黑板数据还没有读者到来,这样就会交出控制权(家族性质,维护团体权益,为后面的读者着想.).而写者就自己单干,每次执行完后都会交出控制权.
代码:
reader(){ p(rmutex); r++; if(r==1) p(ws);//1 v(rmutex); 读取数据; p(rmutex); r++; if(r==0) v(ws);v(rmutex);}
write (){ p(ws)写;v(ws)}
读者写者交替执行.
由于读者家族护短,总是维护自己家族的人,写者就想,我也要维护自己家族的人,即读者和写者各自都要维护后续到来的自己人.
reader(){ p(rs) p(rmutex); r++;//维护读者家族,阻塞写者家族 if(r==1) p(ws);//1 v(rmutex); v(rs) 读取数据; p(rmutex); r--; if(r==0) v(ws); v(rmutex);}
write (){ p(wmutex); w++; //维护写者家族,阻塞读者家族 if(w==1) p(rs); v(wmutex); p(ws) 写数据; v(ws) p(wmutex); w--; if(w==0) v(rs); v(wmutex);}
由于读者和写者两个家族总是护短,终于有一次大大出手,最后商定,我们都不管了,让后辈自己去争吧.
就像这样,读者不会阻塞写者,写者也不阻塞读者,每一个新到来的读者和写者总是一起竞争.
代码:
reader(){ p(s) p(rmutex); r++;//写者和读者不能同时存在 if(r==1) p(ws);//1 v(rmutex); v(s) 读取数据; p(rmutex); r++; if(r==0) v(ws); v(rmutex);}
reader(){ p(s) p(wmutex); w++;//写者和读者不能同时存在 if(r==1) p(rs);//1 v(wmutex); v(s) p(ws) 写数据; v(ws) p(wmutex); w++; if(w==0) v(rs); v(wmutex);}
由于读者家族新生一辈很强悍,打得写者家族遍历鳞伤,于是写者家族重启保护后一辈(后续到来的写者)的政策.
就像这样:
reader(){ p(s) p(rmutex); r++;//写者和读者不能同时存在 if(r==1) p(ws);//1 v(rmutex); v(s) 读取数据; p(rmutex); r++; if(r==0) v(ws); v(rmutex);}
writer(){ p(wmutex); w++;//维护读者家族,阻塞写者家族 if(r==1) p(s);//1 v(wmutex); p(ws) 写数据; v(ws) p(wmutex); w++; if(w==0) v(s); v(wmutex);}
0 0
- 读写者的四种优先调度方式
- java四种读写方式
- 关于linux锁的c++封装 条件锁,读写锁(不同方式实现读写优先)
- Java读写XML文件的四种方式(DOM、SAX、JDOM、DOM4J)简述与比较
- 读写锁写锁优先的坑
- java任务调度的几种方式
- 三种时间调度的方式
- 短进程优先的调度算法详解
- 短进程优先的调度算法详解
- 按优先数调度算法实现处理器调度的程序
- 管道的四种读写情况
- php读写xml的四种方法
- 进程的调度方式,调度算法总结
- Python 读写文件的几种方式
- C#读写EXCEL的几种方式
- Java读写Excel的三种方式
- Java读写文件的几种方式
- 文件内容读写的几种方式
- 网易游戏开发岗实习面试(十年广州求学路以及一个菜鸟半年多的成长之路)
- 关于uri转真实路径是报空指针的原因
- (standard c libraries translation )write
- 序列化和反序列化方法
- Ajax Post数据时加号变空格的解决办法
- 读写者的四种优先调度方式
- Sqoop使用和简介
- LA 3989 - Ladies' Choice 稳定婚姻问题
- 同步盘的同步文件夹是怎么回事?如何设置?
- toggle在jquery1.9中被废除
- Cocos2d-x CCTouchBegin 的bool返回值的作用
- 旅行商问题
- 使用jquery图表插件jqplot之折线图
- Spring事务隔离级别