基于信号量与P/V操作同步机制的读者/写者问题的设计与实现 (写者优先)

这篇博客介绍了作者在操作系统课程设计中,使用Java实现基于信号量与P/V操作的读者/写者问题,强调写者优先。文章详细阐述了设计思路,包括设立五个信号量以确保原子性,并在代码中展示了实现过程。这是作者首次在CSDN记录编程经历,尽管自认为代码不够完美,但仍勇敢分享。
摘要由CSDN通过智能技术生成

在操作系统课程设计中,老师给了这样一个题目,并且要求以GUI的形式模拟整个操作过程。所以,首先映入我脑海的语言便是JAVA。主意敲定,开始构思,如何用JAVA来巧妙地表现这种机制,尽管Java提供了synchronized,Semaphore等关键词,但在构思过程中依然是困难的。

  建立读者类和写者类,建立之后为了实现写者优先需设定五个信号量,然而这五个信号量是在两个类中交替出现的,而且要保证原子性。不得已将这五个类全部放在主类中,设为静态变量。由此在另外两个类应用时很繁琐。

五个信号量:

public static Semaphore readCountSemaphore=new Semaphore(1); //读者数量更改,保持原子性

public static Semaphore writeSemaphore=new Semaphore(1);     //写者信号量
public static Semaphore reader_wait=new Semaphore(1); //读者信号量
public static Semaphore first_reader_wait=new Semaphore(1);//第一个读者,为了实现写者优先

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值