当前位置:网站首页>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

1、 Writer and writer

2、 Readers and writers

3、 Readers and readers

Two 、 Lock reading and writing / Basic principle of unlocking

1、 Readers lock / Unlock

2、 The writer locks / Unlock

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 .

原网站

版权声明
本文为[abs(ln(1+NaN))]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/186/202207050520482737.html