【Python高階程式設計020 ● 網路程式設計 ● TCP的介紹】
阿新 • • 發佈:2020-09-09
---------Python基礎程式設計---------
Author : AI菌
【內容講解】
1.死鎖的概念: 一直等待對方釋放鎖的情景就是死鎖。 2.死鎖的危害:死鎖一旦產生就會造成應用程式的停止響應,應用程式無法再繼續往下執行了。 3.解決死鎖的方法:使用互斥鎖的時候需要注意死鎖的問題,要在合適的地方注意釋放鎖。
【程式碼演示】
""" 1.死鎖的概念: 一直等待對方釋放鎖的情景就是死鎖。 2.死鎖的危害:死鎖一旦產生就會造成應用程式的停止響應,應用程式無法再繼續往下執行了。 3.解決死鎖的方法:使用互斥鎖的時候需要注意死鎖的問題,要在合適的地方注意釋放鎖。 """ import threading # 建立互斥鎖 lock = threading.Lock() # 保證同一時刻只有一個執行緒根據下標去取值 def get_value(index): # 取值之前先上鎖 lock.acquire() my_list = [0, 1, 2] # 判斷下標是否越界 if index >= len(my_list): print("下標越界:", index) # 下標越界不能取值,也需要把鎖釋放,保證後面的執行緒可以再次取值 # 如果執行緒一直不釋放鎖,其他執行緒就一直等待,形成死鎖,程式就無法往下繼續執行 lock.release() # 如果下標越界,直接結束函式get_value return # 根據下標獲取值 result = my_list[index] print(result) # 取值完成需要釋放鎖 lock.release() if __name__ == '__main__': # 建立很多執行緒,同時執行某個任務 for i in range(5): # 建立子執行緒 sub_thread = threading.Thread(target=get_value, args=(i,)) # 啟動執行緒執行任務 sub_thread.start()
【執行結果】
0 1 2 下標越界: 3 下標越界: 4
【往期精彩】
▷【Python基礎程式設計196 ● 讀取檔案的4種方式】
▷【Python基礎程式設計197 ● 讀取檔案的4種方式】
▷【Python基礎程式設計198 ● 讀取檔案的4種方式】
▷【Python基礎程式設計199 ● Python怎麼讀/寫很大的檔案】
▷【Python基礎程式設計200 ● 讀取檔案的4種方式】
▷【Python基礎程式設計201 ● 讀取檔案的4種方式】
▷【Python基礎程式設計202 ● 讀取檔案的4種方式】
▷【Python基礎程式設計203 ● 讀取檔案的4種方式】
【加群交流】