新聞中心
1、程序永遠(yuǎn)無法運(yùn)行結(jié)束,根本原因在于:

成都創(chuàng)新互聯(lián)公司專注于瑪多網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供瑪多營銷型網(wǎng)站建設(shè),瑪多網(wǎng)站制作、瑪多網(wǎng)頁設(shè)計(jì)、瑪多網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造瑪多網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供瑪多網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
一個(gè)線程持有鎖1同時(shí)在請求鎖2,另一個(gè)線程持有鎖2同時(shí)在請求鎖1,二者不得到對方的鎖都不會放開自己的鎖,程序就這樣僵持下去了。
2、實(shí)例
兩個(gè)線程會同時(shí)開啟,程序打印出
print1 first Thread-1 print1 second Thread-1 print2 first Thread-1 print1 first Thread-2
(1)第一個(gè)線程先執(zhí)行print1,獲得了鎖1,等待1秒。這時(shí)第二個(gè)線程已經(jīng)開啟,企圖獲得鎖1,但是獲取不到于是等待
(2)第一個(gè)線程等待時(shí)間結(jié)束,獲得鎖2,打印結(jié)束釋放兩把鎖。之后馬上開始執(zhí)行print2,并獲得鎖2,等待1秒
(3)這時(shí)第二個(gè)線程可以獲得鎖1了,開始執(zhí)行print1,也等待1秒
(4)等待時(shí)間結(jié)束,第一個(gè)線程持有鎖2企圖獲得鎖1,第一個(gè)線程持有鎖1企圖獲得鎖2,就陷入了僵局
以上就是Python死鎖的產(chǎn)生原因,希望對大家有所幫助。更多Python學(xué)習(xí)推薦:python教學(xué)
本文教程操作環(huán)境:windows7系統(tǒng)、Python 3.9.1,DELL G3電腦。
網(wǎng)頁標(biāo)題:創(chuàng)新互聯(lián)Python教程:Python死鎖的產(chǎn)生原因
文章位置:http://fisionsoft.com.cn/article/coioceh.html


咨詢
建站咨詢
