91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 3KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-03
  • 語言: 其他
  • 標簽:

資源簡介

有三個.cpp文件,代碼是我親手寫的,都可以運行,這個代碼包含有3種方式避免死鎖的方法,一個是允許四個哲學家同時進餐,第二個是一下子就拿兩根筷子,否則不拿,第三個就是奇數哲學家先拿左邊的筷子,偶數哲學家拿右邊的筷子

資源截圖

代碼片段和文件信息

#include?
#include?
#include?

#define?num?4
//靜態加載pthreadVC2.lib庫文件
#pragma?comment(lib?“pthreadVC2.lib“)


//聲明互斥信號量五根筷子互斥使用
pthread_mutex_t?chopstick[5]?=?{?PTHREAD_MUTEX_INITIALIZER?PTHREAD_MUTEX_INITIALIZER?PTHREAD_MUTEX_INITIALIZER
?????????????????????????????????PTHREAD_MUTEX_INITIALIZER?PTHREAD_MUTEX_INITIALIZER?};

//函數聲明
void?getChop(int?i);
void?layChop(int?i);
void?*philosophe(void?*i);

//全局變量聲明
//用來表示有多少個哲學家在拿筷子
int?count?=0;

int?main()
{
//聲明進程變量thread1
pthread_t?thread1t1t2t3t4t5;
//創建五個進程
//以此方式創建線程一直都是以順序執行的,
/* for?(int?i?=?0;?i? pthread_create(&thread1?NULL?philosophe?(void*)(i+1));
pthread_join(thread1?NULL);
}*/
pthread_create(&t1?NULL?philosophe?(void*)1);
pthread_create(&t2?NULL?philosophe?(void*)2);
pthread_create(&t3?NULL?philosophe?(void*)3);
pthread_create(&t4?NULL?philosophe?(void*)4);
pthread_create(&t5?NULL?philosophe?(void*)5);
pthread_join(t1?NULL);
pthread_join(t2?NULL);
pthread_join(t3?NULL);
pthread_join(t4?NULL);
pthread_join(t5?NULL);
system(“pause“);
return?0;
}

/*
哲學家方法,用于線程的創建
*/
void?*philosophe(void?*i)?{
int?index?=?(int)i;
getChop(index);
printf(“哲學家%d開始進餐!\n“?index);
layChop(index);
return?NULL;
}
/*
哲學家拿起筷子的方法
*/
void?getChop(int?i)?{
//當喚醒后,要去判斷拿到筷子的人數是否達到四人
while?(count<4)?{
int?ret_trylock1?=?pthread_mutex_lock(&chopstick[i-1]);
//當有哲學家拿起第一個筷子的時候就表示有一個人在拿筷子了
if?(!ret_trylock1)?{
count++;
}
int?ret_trylock2?=?pthread_mutex_lock(&chopstick[i%5]);

if?(!ret_trylock1?&&?!ret_trylock2)?{
break;
}
}
}

//哲學家放筷子開始思考
void?layChop(int?i)
{
//把打印語句放在上面是考慮到當把鎖釋放后,會立即有線程對資源進行加鎖,以為是程序邏輯有問題
printf(“哲學家%d已經進餐完畢,開始思考\n“?i);

pthread_mutex_unlock(&chopstick[i?-?1]);
pthread_mutex_unlock(&chopstick[i?%?5]);
????????????????//釋放兩只筷子資源后就使count-1表示此時吃飯的人減少了一位
count--;
}





?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2211??2019-05-05?20:16??只有四個哲學家吃飯.cpp
?????文件????????2138??2019-05-05?20:16??同時拿兩根筷子.cpp
?????文件????????1773??2019-05-05?20:16??奇數拿先左邊在拿右邊.cpp

評論

共有 條評論