資源簡介
哲學家就餐問題C語言源文件,操作系統課程論文要求,進程同步模擬
代碼片段和文件信息
#include?
#include?
#define?N?5
#define?LEFT?(i+N-1)%N
#define?RIGHT?(i+1)%N
#define?THINK_TIME?3
#define?EAT_TIME?2
enum?{?THINKING?HUNGRY?EATING?}?state[N];
pthread_mutex_t?mutex?=?PTHREAD_MUTEX_INITIALIZER?s[N];
void?test(int?i)
{
????if?(state[i]?==?HUNGRY
?????&&?state[LEFT]?!=?EATING
?????&&?state[RIGHT]?!=?EATING)
????{
????????state[i]?=?EATING;
????????pthread_mutex_unlock(&s[i]);
????}
}
void?take_forks(int?i)
{
????pthread_mutex_lock(&mutex);
????state[i]?=?HUNGRY;
????test(i);
????pthread_mutex_unlock(&mutex);
????pthread_mutex_lock(&s[i]);
}
void?put_forks(int?i)
{
????pthread_mutex_lock(&mutex);
????state[i
- 上一篇:復雜網絡社團發現代碼
- 下一篇:課程論文 圖書管理
評論
共有 條評論