记录型信号量---进程的同步与互斥面向对象的解决方案(一)


由于为了提高计算机系统资源的利用率,人们引入了多道程序设计技术,逐渐操作系统也慢慢成型,随之而来的问题也出现了,例如计算机系统资源有一些是不允许被同一段时间内被多个进程同时访问的,一个进程的执行需要另外的进程执行完毕,这个进程才可以执行,也就是进程的互斥与同步。

操作系统可以说是管理计算机系统资源,合理的组织工作流程的软件,学习操作系统,不仅能让我们熟悉我们软件开发者的工作平台,也能让我们去学习我们的前辈去决解问题的方法和思路,决解进程的同步与互斥问题的方法中,现在最为行之有效的是信号量机制,以简单信号量为例,需要一个标志系统某资源数目的整型数,一个阻塞队列,一对PV原语。

 

Int Semaphore//标志系统某资源数目的整型数

Queue;//阻塞队列

P原语伪代码如下:

P(){

   屏蔽中断;

   Semaphore--;

   If(semaphore<0){

       Queue.push(当前进程);

   }

  开中断;

V原语伪代码如下:

v(){

   屏蔽中断;

   Semaphore++;

   If(semaphore>=0){

       Queue.pop()

   }

  开中断;

}

 

现在软件开发中面向对象的方法无疑是主流的开发方法,以不违背人的自然思考为主要优点,备受开发者们喜爱。面向对象中讲究封装,信息隐藏,观察上述代码,完全可以写在一个类中。

我们采用Java代码,因为我比较熟悉!!用线程模拟进程!!

代码如下:

package com.hao.pv;

import java.util.concurrent.BlockingQueue;

import java.util.concurrent.LinkedBlockingQueue;

public class PV {

private int semaphore = 0;//整形数

 

private BlockingQueue<Thread> blockingQueue;//线程阻塞队列

 

public PV(int semaphore) {//初值

super();

this.semaphore = semaphore

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值