题外话:

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

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

银行家算法简介:

 

linux多线程模拟银行家算法
 
linux多线程模拟银行家算法
 
linux多线程模拟银行家算法
 
linux多线程模拟银行家算法
 
linux多线程模拟银行家算法
 
linux多线程模拟银行家算法
 
linux多线程模拟银行家算法
 
linux多线程模拟银行家算法
 

代码:

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

 

linux多线程模拟银行家算法
 

 

linux多线程模拟银行家算法
 

 

linux多线程模拟银行家算法
 

 

linux多线程模拟银行家算法
 

 

linux多线程模拟银行家算法
 

 

linux多线程模拟银行家算法
 

 

linux多线程模拟银行家算法
 

 

linux多线程模拟银行家算法
 

效果图:

 

linux多线程模拟银行家算法
 

 

linux多线程模拟银行家算法
 

 

linux多线程模拟银行家算法
 

 

linux多线程模拟银行家算法
 

遇到的问题:

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

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

linux多线程模拟银行家算法
 

错误原因:

其一:忘了加&

linux多线程模拟银行家算法
 

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

 

linux多线程模拟银行家算法
 

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

 

相关文章:

  • 2021-08-16
  • 2021-05-15
  • 2021-09-04
  • 2021-09-03
猜你喜欢
  • 2021-10-25
  • 2022-12-23
  • 2022-12-23
  • 2021-09-23
  • 2021-08-01
  • 2021-05-07
  • 2022-12-23
相关资源
相似解决方案