在JS中实现PV操作

PV操作原理:添加链接描述

前言:
在参加 中国计算机技术职业资格考试复习的时候,看到书中有一种对互斥与同步问题的解决方法,称为PV操作,具体的PV操作原理就不在这里赘述,不了解的小伙伴可以到置顶的链接中,看别的大佬的讲解,下面就是我在JS中进行的PV操作相关原理的实现代码块,如有需要的小伙伴可以进行参考~

// 使用时new新的PV对象 可最大信号量 可选设置互斥阀值
		function PV(maxPV_Index,minPV_index){
			// 创建最大信号量
			this.PV_Index;
			//创建互斥阀值
			this.minPV_index = 0;
			
			//创建整数正则
			var reg = /^\d+$/;
			// 对传入数据进行筛选
			if(!reg.test(maxPV_Index)){
				console.log("maxPV_Index not is a int");
			}else{
				this.PV_Index = maxPV_Index;
			}
			
			if(minPV_index!=null){
				if(!reg.test(minPV_index)){
					console.log("minPV_index not is a int");
				}else{
					this.minPV_index = minPV_index;
				}
			}
			
			// 创建P操作方法
			this.P = function(){
				this.PV_Index = this.PV_Index-1;
			}
			// 创建V操作方法
			this.V = function(){
				this.PV_Index =  this.PV_Index+1;
			}
			// 创建判断当前是否能够进行互斥操作方法
			this.canDo = function(){
				if(this.PV_Index>this.minPV_index){
					return true;
				}else{
					return false;
				}
			}
			//创建获得剩余互斥操作次数方法
			this.getPV_Index = function(){
				return this.PV_Index;
			}
		}
// 测试代码
		var pv_One = new PV(5);
		// 查询当前可使用资源数量
		console.log(pv_One.getPV_Index());
		// 进行P操作
		pv_One.P();
		console.log(pv_One.getPV_Index());
		//进行V操作
		pv_One.V();
		console.log(pv_One.getPV_Index());
		// 查看当前是否还能进行P操作
		console.log(pv_One.canDo());
		//测试不能进行P操作时的情况
		while(pv_One.getPV_Index()>0){
			pv_One.P();
		}
		console.log(pv_One.getPV_Index());
		console.log(pv_One.canDo());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值