资源简介

这是关于银行家算法的linux下实现的代码,由于技术有限,其中若有bug,可与本人联系,yym112358@163.com

资源截图

代码片段和文件信息

#include
#include
#include
#include 
#include
#include

#define True 1
#define False 0
pthread_mutex_t mutex;

int Finish[5] = {False};
int allocation[5][3] = {010302302211002};
int need[5][3] = {743020600011431};
int available[3] = {230};
int work[3];

void copy()
{
int i;
for(i = 0;i<3;i++)
work[i]= available[i];
}
int term(int i)
{
int j;
for(j = 0;j<3;j++)
if(need[i][j]>work[j])
return False;
return True;
}
int term1()
{
int i;
int j;
for(i = 0;i<5;i++)
{
if((Finish[i] == 0) && (term(i) == 1))
return i;
}
return 5;
}

void term2(int i)
{
int j;
for(j = 0;j<3;j++)
work[j] = work[j] + allocation[i][j];
Finish[i] = True;
}

int term3()
{
int i;
for(i = 0;i<5;i++)
{
if(Finish[i] == 0)
{
return False;
}

}
return True;
}

int IsSafe()
{
copy();
int i;
for(i = 0;i<5;i++)
{
if(term1()!=5)
{
term2(term1());
}
 else if(term1() == 5)
{
int m = term3();
if(m == 1)
return True;
else
return False;
}
}
if(term1() == 5)
{
int m = term3();
if(m == 1)
return True;
else
return False;
}
}

int  condition1(int *request)
{
int i;
for(i = 1;i<4;i++)
{
if(request[i]>need[request[0]][i-1])
{
printf(“%s%d %d: %d %s%d %d: %d \n““request“request[0]irequest[i]“> need“request[0]ineed[request[0]][i]);
return False;
}
}
return True;
}

int condition2(int *request)
{
int i;
for(i = 1;i<4;i++)
{
if(request[i]>available[i-1])
{
printf(“%s%d %d: %d %s%d: %d \n““request“request[0]irequest[i]“> available “iavailable[i-1]);
return False;
}
}
return True;
}

void *runner(void *param)
{
pthread_mutex_lock(&mutex);

int *request = (int *)param;
if(condition1(request) == 0)
{
printf(“%s%d:““request“request[0]);
int j;
for(j = 0;j<3;j++)
printf(“ %d “request[j+1]);
printf(“ denied 

评论

共有 条评论