linux多线程模拟银行家算法

题外话:

这应该是最近有点难度的作业了,起码比之前的理发师,读写,哲学家问题要难。

但是做好程序的结构,自顶向下,就还是不难的。 

银行家算法简介:

 


 

 

 

 

 

 

 

 

代码:

init() 初始化  reset() 资源回收  Banker() 银行家算法 safe() 安全性算法

 


 

 


 

 


 

 


 

 


 

 


 

 


 

 


 

效果图:

 


 

 


 

 


 

 


 

遇到的问题:

主要问题是一开始用sem_t声明mutex,结果不能pthread_cond_wait(&cond, &mutex);看来必须用pthread_mutex_t mutex;

vector数组clear时需要指定Allocation[i],而非Allocation.clear()


 

错误原因:

其一:忘了加&


 

其二:i在不断++,虽然调用pthread_create在i++前,但是可能存在时间差导致传的是i增加后的数,导致越界。所以换为数组。

 


 

以及常见的忘记右括号,忘记分号....

 

posted @ 2019-07-01 23:52  Erio  阅读(2283)  评论(0编辑  收藏  举报