#include
#include
#include
//int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);
int g_data=0;
pthread_mutex_t mutex;
/*兩個互斥鎖*/
pthread_mutex_t mutex2;
void
*func1
(void
*arg)
pthread_mutex_unlock
(&mutex);}
void
*func2
(void
*arg)
intmain()
ret=
pthread_create
(&t2,
null
,func2,
(void*)
¶m);//建立鎖
if(ret==0)
printf
("main:%ld \n",(
unsigned
long
)pthread_self()
);pthread_join
(t1,
null);
//等待鎖
pthread_join
(t2,
null);
pthread_mutex_destroy
(&mutex)
;//銷毀鎖
pthread_mutex_destroy
(&mutex2)
;//銷毀鎖
return0;
}
執行結果:
什麼時候造成死鎖?
首先要擁有兩把鎖,當執行緒a獲得一把鎖,而要獲得另一把鎖的時候;然而執行緒b手裡握著執行緒a想要獲得的那把鎖,同時也想拿執行緒a的鎖;這樣就導致,兩個執行緒都想要拿對方手中的那把鎖,然而誰都不願意在自己身上減鎖,最後造成執行緒死鎖。
——@上官可程式設計
執行緒6 什麼情況造成死鎖
1.什麼是死鎖 2.什麼情況造成死鎖 前提條件 你有2個鎖,當執行緒a獲得一把鎖的時候,想要獲得另外一把鎖,而執行緒b使用著執行緒a想要的鎖,還想要獲得執行緒a正在使用的鎖的時候。include include int g data 0 共享資源 pthread mutex t mutex 建立互斥...
C 是什麼情況
說起lambda表示式其實簡單理解為乙個方法,什麼方法呢 是個匿名方法 就是乙個沒名字的方法 第一種 是乙個既沒有引數又沒有返回值的方法 第二種 x x 2 是乙個引數為x返回值為x 2的方法 第三種 x,y x y 是乙個引數為x和y返回值為兩個引數之和的的方法,當引數大於乙個的時候lambda前...
智慧型手環是什麼情況
2.陀螺有三個軸。其中乙個為回轉軸,另外兩個在這裡先分別稱為主軸和次軸。回轉軸沿垂直線轉動,主軸沿過垂直線與圖示紙張同平面的平面旋轉,次軸沿過垂直線且與圖示紙張平面垂直的平面旋轉。3.回轉軸是陀螺工作的動力源。主軸是驅動軸,次軸是從動軸。4.如果陀螺沿回轉軸轉動,並且有外力矩加在主軸上,那麼次軸將產...