是什麼情況造成死鎖

2021-10-20 20:08:34 字數 1170 閱讀 3007

#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.如果陀螺沿回轉軸轉動,並且有外力矩加在主軸上,那麼次軸將產...