c語(yǔ)言中避免死鎖的條件?
1)設(shè)置加鎖順序:假如在多線程中,一個(gè)線程需要鎖,那么他必須按照一定得順序獲得鎖。
2)設(shè)置加鎖時(shí)限:在獲取鎖的時(shí)候嘗試加一個(gè)獲取鎖的時(shí)限,超過(guò)時(shí)限不需要再獲取鎖,放棄操作對(duì)鎖的請(qǐng)求。
3)死鎖檢測(cè):當(dāng)一個(gè)線程獲取鎖的時(shí)候,會(huì)在相應(yīng)的數(shù)據(jù)結(jié)構(gòu)中記錄下來(lái),相同下,如果有其他線程請(qǐng)求鎖,也會(huì)在相應(yīng)的結(jié)構(gòu)中記錄下來(lái)。當(dāng)一個(gè)線程請(qǐng)求失敗時(shí),需要遍歷一下這個(gè)數(shù)據(jù)結(jié)構(gòu)檢查是否有死鎖產(chǎn)生。