读者写者问题的写者优先算法
问题描述:
有读者(reader)和写者(writer)两组并发进程,共享一个文件,当两个或以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。
因此要求:
① 允许多个读进程可以同时对文件执行读操作;
② 只允许一个写进程往文件中写信息;
③ 任一写进程在完成写操作之前不允许其它读进程或写进程工作;
④ 写进程执行写操作前,应让已有的读进程和写进程全部退出。
写者优先问题分析:
1:写进程与写进程和写进程与读进程要互斥访问数据集。
2:当没有写进程正在访问共享数据集的时候,多个读进程可以同时访问。
3:当有进程在访问数据集的时候,后续等待的写进程优先访问。
需要用到的变量和信号量:
互斥信号量Wmutex实现写进程之间的互斥,互斥信号量Rmutex实现读进程和写进程之间的互斥。 两个整型变量:Wcount和Rcount记录等待的写进程数量和正在读的读进程数量。 互斥信号mutex1和mutex2用来实现进程对共享变量Wcount和Rcount的互斥访问,