读者写者问题实验代码_第1页
读者写者问题实验代码_第2页
读者写者问题实验代码_第3页
读者写者问题实验代码_第4页
读者写者问题实验代码_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实用文案实验内容1、定义一个数据缓存buffer及用于实现同步互斥的信号量。2、定义一个读者函数:当有写者在占用buffer时,读者应该等待,直到写者不再使用该buffer。当有其他读者在占用buffer时,读者可对buffer进行读取操作。当buffer中有数据时,则从其中读取一个数据,并显示然后退出。当buffer中没有数据时,应等待,直到buffer中有数据可读。3、定义一个写者函数当有读者在占用buffer时,写者应该等待,直到所有的读者都退出为止。当有其他写者占用buffer时,该写者应该等待,直到占用buffer的写者退出为止。当buffer有空闲时,写者应该在buffer中写入一

2、个数据并退出。当buffer满时,写者应该等待,直到buffer有空闲为止。4、定义主函数,在其中可以任意创建读者与写者。可根据用户输入创建读者或写者进程(线程)。5、用户界面.读者:开始结束读者队列等待2i读出的内容:.写者:开始结束写出的内容:Helloworld!结束实验当堂所要完成事情列表:调试程序使其在读者优先模式下可以运行并且能实现基本的功能得出正确的结果:能够实现读写互斥,写写互斥,读读不互斥,一个进程结束能够唤醒等待队列中的进程(先读者队列后写着队列)根据实验要求完善功能:由用户决定写者向缓冲区中写入的内容,读者能够读出并显示出来;当缓冲区中没有数据时,读者要等待,直到缓冲区中

3、有数据才能读根据“读者优先”加以改变,增加一个“写者优先”模式,并且由用户来选择模式源代码:正在读的读者数量写者队列中等待写操作的写者数量读进程号写进程号读写互斥信号量用户选择读者优先写者优先标识空的信号量表示空读者等待队列写者等待队列初始化读进程读操作当前没有读进程在读可能有写进程在写可能空闲如果空闲,读者拿到相当于一个操作将读者进程加入等待队列将读者进程加入等待队列读者正在读读取内容即写者写的内容写者线程正在执行t有写者在写不能读!将读者进程加入等待队列则知道当前已经有读者在读,读读不互斥,则这个读者可以直接进来了读读者正在读写进程写操作有读者进程在执行t有读者在读不能写!将写者进程加入等

4、待队列则当前无读者,但以有写者在写t有写者在写不能写!将写者进程加入等待队列写者正在写请输入要写的内容读者优先时唤醒进程当前无读进程,是写者在写停止运行写进写者已经写完中已经有内容要置为当前读者队列中的等待进程数确实有读者在等待等待的读者正在读没有读者等待,看是否有写者等待检查写者等待队列等待的写者正在写请输入要写入的内读者正在读,读此时若有等待必为写者缓冲区空等待写者读者已经读完检查写者等待队列等待的写者正在写请输入要写入的内容写者优先唤醒当前无读进程,是写者在写停止运行写进程写者已经写完中已经有内容要置为当前写者队列中的等待进程数确实有写者在等待等待的写者正在写请输入要写的内容没有者等待,

5、看是否有者等待检查写者等待队列等待的读者正在读读者正在读,读此时若有等待必为写读者已经读完检查写者等待队列等待的写者正在写请输入要写入的内容创建读者进程创建写者进程结束当前执行的进程退出程序当前队列中有读者:个写者:个输入错误请重新输入创建读者进程创建写者进程结束当前执行的进程退出程序当前队列中有读者:个写者:个输入错误请重新输入读者与写者实验读者优先写者优先输入错误请重新输入实验流程图:写者优先唤醒有读者说明若有等待必为写者进行写操作直到写者队列为空分别用两个队列来存放等待的读者进程和写者进程,一个进程结束后就要将因他阻塞的进程唤醒,如果是读者优先,则先检查读者进程,如果发现读者进程不为空,就进行读操作,直到读者进程为空,才进行写操作;同理,如果是写者优先,则先检查写进程,如果发现写者进程不为空,就进行写操作,直到写者进程为空,才进行读操作。读写互斥:只有当互斥信号量并且当前读者数为时,才可以进行写操作,对于读进程,且当前读者数为时,第一个读进程进行读操作,当当前读者数大于时,不用判断互斥信号量而直接进行读操作。对缓冲区为空的情况,如果缓冲区为空时进行读操作,则会设置一个信号量标志

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论