当前位置:网站首页>Reader writer model
Reader writer model
2022-07-05 05:24:00 【abs(ln(1+NaN))】
Similar to the producer consumer model , The reader writer model also has a critical resource , Two roles , Three relationships , The reader writer model is characterized by :
(1) Writer ( Threads ) Less , readers ( Threads ) many
(2) Readers will not take away critical resources
Blackboard newspaper is a typical reader writer model , There is only one person who draws blackboard newspaper ( That is, the writer ), But there are many people who read blackboard newspaper ( That is, readers ), Here is an example to introduce the reader writer model .
Catalog
One 、 Three relationships in the model
Two 、 Lock reading and writing / Basic principle of unlocking
3、 ... and 、 Priority questions
One 、 Three relationships in the model
The two roles refer to the reader role and the writer role , The three relationships refer to readers and readers 、 Writer and writer 、 Readers and writers .
1、 Writer and writer
Only one person can draw blackboard newspaper every time , If two people draw at the same time , A person paints the theme of fire fighting , Another person is painting Animal Themes , This is not what we want to see .
==》 So there is a mutually exclusive relationship between writers , You have to wait for one person to finish painting , To make the next painting
2、 Readers and writers
sometimes , You might think , Drawing blackboard newspaper and reading blackboard newspaper can be carried out at the same time , But in the process of painting , The reader may not be able to get What are you drawing , Obviously you are painting dragons , The reader said you were painting snakes . This leads to misunderstanding , So you should wait until the writer finishes drawing , Readers read again . This is an understanding angle
Another angle is , Readers are still reading , The writer wants to erase the blackboard newspaper , Obviously, this is contradictory , So we should let readers finish reading , The writer erases again .
Both angles show , Readers and writers are mutually exclusive
3、 Readers and readers
Reading by one person does not affect reading by another , There is no mutual exclusion here .==》 There is no relationship between readers
Two 、 Lock reading and writing / Basic principle of unlocking
Linux The corresponding lock is provided for readers and writers —— Reader lock and writer lock
We use the number of readers as a critical resource , namely int readers = 0;
1、 Readers lock / Unlock
The reader's declaration of the locking function is as follows :
Because there is no relationship between readers , So locking and unlocking are two independent processes
Lock = People who read blackboard newspapers add 1
Unlock = The number of people reading blackboard newspaper is reduced 1
// Lock
lock();
readers++;
unlock();
// Unlock
lock();
readers--;
unlock();
2、 The writer locks / Unlock
The writer's locking function is declared as follows :
When there are readers , namely readers Not for 0 when , The writer cannot modify the content , After locking at this time , You must wait until the writer writes the content , To unlock
// Lock
lock();
while(readers > 0)
{
wait(); // Enter the condition variable and wait
}
modify(); // Used to indicate the operation of the writer to modify the content
// Unlock
unlock(); // Generally, after modifying the content, unlock
3、 ... and 、 Priority questions
In the previous description of the relationship between readers and writers , We analyzed their relationship from two perspectives . One is the writer first , I haven't finished , Don't even read ; The other is reader first , I haven't finished reading , Don't wipe it .
In actual use , More of us will choose readers first , After all, the minority is subordinate to the majority , The most basic feature of the reader writer model is that there are many readers , Few writers . That is, the writer is less important than the reader .
Readers first : When readers and writers arrive at the same time , Readers have priority in accessing
Writer first : When readers and writers arrive at the same time , Readers who come later than the current writer , Do not enter the critical area for access , etc.
There are no readers in the critical area , namely readers = 0 when , The writer writes first .
边栏推荐
- 支持多模多态 GBase 8c数据库持续创新重磅升级
- Haut OJ 1316: sister choice buys candy III
- Haut OJ 1357: lunch question (I) -- high precision multiplication
- Web APIs DOM节点
- Transport connection management of TCP
- Support multi-mode polymorphic gbase 8C database continuous innovation and heavy upgrade
- TF-A中的工具介绍
- [to be continued] [UE4 notes] L1 create and configure items
- Embedded database development programming (VI) -- C API
- 小程序直播+电商,想做新零售电商就用它吧!
猜你喜欢
随机推荐
SAP-修改系统表数据的方法
Haut OJ 1218: maximum continuous sub segment sum
[binary search] 69 Square root of X
Under the national teacher qualification certificate in the first half of 2022
Improvement of pointnet++
ssh免密登录设置及使用脚本进行ssh登录并执行指令
[转]MySQL操作实战(一):关键字 & 函数
Haut OJ 1321: mode problem of choice sister
发现一个很好的 Solon 框架试手的教学视频(Solon,轻量级应用开发框架)
Quick sort summary
Transport connection management of TCP
Pointnet++的改进
嵌入式数据库开发编程(零)
Introduction to memory layout of FVP and Juno platforms
Learning notes of "hands on learning in depth"
When will Wei Lai, who has been watched by public opinion, start to "build high-rise buildings" again?
[to be continued] [UE4 notes] L2 interface introduction
Embedded database development programming (V) -- DQL
搭建完数据库和网站后.打开app测试时候显示服务器正在维护.
嵌入式数据库开发编程(六)——C API