面試 用C 寫乙個死鎖程式

2021-09-26 03:32:42 字數 583 閱讀 5404

面試官要求用c++寫乙個死鎖的程式。

目前想到兩種簡單的寫法,一種是單執行緒對乙個資源重複申請上鎖;第二種是兩個執行緒對兩個資源申請上鎖,形成環路。

實現1

#include

#include

#include

#include

using namespace std;

int data =1;

mutex mt1,mt2;

voida2(

)voida1(

)int

main()

實現2
#include

#include

#include

#include

using namespace std;

int data =1;

mutex mt1,mt2;

voida2(

)voida1(

)int

main()

上述**執行後3處cout都不會列印資訊,a1和a2互相死等,形成死鎖。

寫乙個死鎖

死鎖產生的原因 乙個執行緒進入鎖一需要鎖二,另乙個執行緒進入鎖二需要鎖一,由於鎖一鎖二都被佔了,所以執行緒執行不下去。所以只需寫乙個相互交叉的鎖一鎖二就可以產生死鎖。class sisuogoucheng implements runnable public void run if panduan ...

寫乙個死鎖的例子

這是乙個很好玩的題,做併發的話,不小心能寫出來。讓你寫乙個一定死鎖的例子,沒有思考過的話,確實不容易。下邊的是 的乙個,別人寫的。非常典型的乙個互相等待導致的死鎖的例子,很好理解。package com.spri.test 在實際程式設計中,要盡量避免出現死鎖的情況,但是讓你故意寫乙個死鎖的程式時似...

乙個簡單的C 死鎖程式

jeffrey richter在 windows核心程式設計 第5版 中描述了乙個死鎖情況 假設執行緒thread1和thread2均需要獨佔方式訪問互斥資源m res1 m res2,應用互斥物件monitor在使用前enter 相當於加鎖 使用後exit 相當於解鎖 由於涉及到兩個資源,此時需要...