多线程模拟实现银行家算法

操作系统实验多线程模拟实现银行家算法

题目

实现课本中的银行家算法,并使用多线程进行实现,你所涉及的程序需要支持n个线程对m中资源的并发访问请求。在实验过程中,能够通过屏幕或者文件,保存每个客户线程申请资源的情况—申请多少;是否被分配等。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <stdbool.h>
#include <time.h>

int nResources=3,nProcesses=0;//定义输入的资源种类和进程数量
int resources[3];//资源数
int allocated[20][3];//为每个进程分配的实例数量
int maxRequired[20][3];//每个进程的最大需求
int need[20][3];//每个进程还需要的资源
int Flag[20];

pthread_mutex_t mutex;//进程互斥锁

bool banker();//系统如果处于安全状态返回true,不安全返回false
void* processCode(void* );//多线程实现
void init();//初始化资源请求等数据
void show();//输出各个资源
int requestr(int customer_num,int request[]);//请求资源
int releaser(int customer_num,int release[]);//释放资源
void runner();

int main(int argc, char *argv[]) {
   
    init();
    show();
    runner();
    return 0;
}


//初始化信息
void init(){
   
    printf("请输入进程的数量:\n");
    scanf("%d", &nProcesses);

    printf("请依次输出每种资源可用数量:\n");
    for(int i=0; i<nResources; i++){
   
        scanf("%d", &resources[i]);
    }
    printf("\n
  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值