執行緒6 什麼情況造成死鎖

2021-10-09 09:19:09 字數 1257 閱讀 6823

1.什麼是死鎖:

2.什麼情況造成死鎖:

前提條件:你有2個鎖,

當執行緒a獲得一把鎖的時候,想要獲得另外一把鎖,而執行緒b使用著執行緒a想要的鎖,還想要獲得執行緒a正在使用的鎖的時候。

#include

#include

int g_data=0;

//共享資源

pthread_mutex_t mutex;

//建立互斥鎖1(互斥量)

pthread_mutex_t mutex2;

//建立互斥鎖2(互斥量)

void

*func1

(void

*arg)

//引數3:呼叫無型別指標api

pthread_mutex_unlock

(&mutex)

;//解鎖,別的執行緒可以上了

}void

*func2

(void

*arg)

//引數3:呼叫無型別指標api

//大家都拿不到另外一把想要的鎖,就會造成死鎖

intmain()

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;

}

執行結果:

dazai@dazai:

~$ gcc demo3.c -lpthread

dazai@dazai:

~$ .

/a.out

main函式建立執行緒t1成功

main函式建立執行緒t2成功

main:

-1210755328

注:執行結果執行到一半鎖死

是什麼情況造成死鎖

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...

什麼情況會發生死鎖,死鎖的處理方法

如兩個程序分別等待對方占有的資源,於是兩個程序都不能執行而處於等待狀態,此執行緒稱為死鎖。程序的三態模型 就緒態 leftrightarrow 執行態 to 等待態 to 就緒態 程序的五態模型 建立程序 to 就緒態 leftrightarrow 執行態 to 等待態 to 就緒態 執行態 to ...

C 是什麼情況

說起lambda表示式其實簡單理解為乙個方法,什麼方法呢 是個匿名方法 就是乙個沒名字的方法 第一種 是乙個既沒有引數又沒有返回值的方法 第二種 x x 2 是乙個引數為x返回值為x 2的方法 第三種 x,y x y 是乙個引數為x和y返回值為兩個引數之和的的方法,當引數大於乙個的時候lambda前...