【C++】线程调度算法题

本文介绍了一道关于线程调度的算法题,要求判断给定的进程是否能顺利完成。题目涉及进程资源分配和需求,输入包括进程数量、资源种类、已有资源和需求资源,以及系统可用资源。解决方案中提到优化线程池的资源释放策略,通过标记值和记录释放位置来提高效率。文章末尾提出了进一步的优化思路,鼓励读者尝试改进。
摘要由CSDN通过智能技术生成

前几天做的一道线程调度的题目,题目本身的思路很简单,主要是检测数据里面有超时的检测数据。下面先贴一下题目要求:

问题描述

进程调度是操作系统设计中非常重要的问题。每个进程都需要一定的资源才能运行,这些资源在进程结束时都会被释放。不同的资源分配策略会对系统的运行效率产生很大的影响,甚至可能导致死锁。
某系统中现有n个进程和m种资源。每个进程开始时得到部分资源,但不足以使得进程顺利执行,还需要得到其它资源才能执行。现已知该系统中各类可用资源的总量,给定的若干进程及其资源分配和需求情况,请指出这些进程是否能够顺利执行?

输入

输入数据有若干组,每组包括四部分:
第一部分为一行,含两个正整数 n(n<=50000) 和 m(m<=100) ,分别表示进程数量和资源的种类。 
第二部分为随后的 m 行。每行含有 n 个整数,为各个进程得到的资源数。 
第三部分也是 m 行,紧随第二部分之后。每行包含 n 个整数,代表进程还需要的资源数。 
第四部分为一行,紧随第三部分之后。该行包含 m 个整数,为系统中当前各类可用资源的数量。 
所有的整数值小于或等于 10^9 。

输出

输出中只包含只"Yes"或"No"。 
如果所有进程均能顺利完成,输出"Yes", 否则输出"No"。

示例输入

4 3
1 6 2 0 
0 1 1 0
0 2 1 2 
2 0 1 4 
2 0 0 2 
2 1 3 0 
0 1 1 
4 3 
2 5 2 0 
0 1 1 0 
1 1 1 2 
1 1 1 4 
2 0 0 2 
1 2 3 0 
0 1 1

示例输出

Yes
No

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值