读者-写者问题思想

来源:互联网 发布:韩国淘宝模特红人 编辑:程序博客网 时间:2024/06/05 12:06

读者-写者问题是一个经典的并发程序设计问题,是经常出现的一种同步问题。计算机系统中的数据(文件、记录)常被多个进程共享,但其中某些进程可能只要求读数据(称为读者);另一些进程则要求修改数据(称为写者)。就共享数据而言,reader和writer是两组并发进程共享一组数据区,要求:

(1)允许多个读者同时执行读操作;

(2)不允许读者、写者同时操作;

(3)不允许多个写者同时操作。

1)读者优先

对于读者优先,应满足下列条件:

如果新读者到:

1、无读者、写者,新读者可以读;

2、有写者等待,但有其它读者正在读,则新读者也可以读;

3、有写者写 ,新读者等待。

如果新写者到:

1、无读者,新写者可以写;

2、有读者,新写者等待;

3、有其他写者,新写者等待。

读者优先的设计思想:读进程只要看到有其它读进程正在读,就可以继续进行读;写进程必须等待所有读进程都不读时才能写,即使写进程可能比一些读进程更早提出申请。该算法只要还有一个读者在活动,就允许后续的读者进来,该策略的结果是,如果有一个稳定的读者流存在,那么这些读者将在到达后被允许进入。而写者就始终被挂起,直到没有读者为止。


2)写者优先1

为了解决以上问题,写者优先的设计思想是在一个写者到达时如果有正在工作的读者,那么该写者只要等待正在工作的读者完成,而不必等候其后面到来的读者就可以进行写操作。注意 ,该算法当一个写者在等待时,后到达的读者是在写者之后被挂起,而不是立即允许进入。

写者优先2

为了保证写者相对于读者的优先,需要提高写者进程的优先级

0 0
原创粉丝点击