无同步关系

互斥关系:

写进程&写进程

读进程&写进程

初步实现:

1、使用count来记录当前有多少个读进程

第一个读进程需要给加锁,后面的读进程则无需加锁,但count++还要执行

2、使用rw实现对文件互斥

3、使用mutex实现对count访问的互斥:

读进程1进入,给文件加锁;此时读进程2进入,count此时还是0,但此时读进程2进入P(rw)会被阻塞

读写公平法

初步实现中,若有多个读进程和写进程,写进程必需在全部读进程完成后,才能访问文件。容易出现写进程饿死

在此添加一个新信号量:w

此时若顺序为:读者1-》写者1-》读者2

读者1写执行P(w)P(rw)V(w)

写者1进入,执行P(w),但被rw阻塞

读者2进入,被w阻塞

此时,读者1执行V(rw),然后读者2还是被w阻塞!!

但写者1可以执行,随后写者1执行P(rw)V(rw)V(w),读者2才能执行。