CAS
827
2025-04-03
1.互斥鎖的使用
import threading # 定義全局變量 g_num = 0 # 創(chuàng)建全局互斥鎖 lock = threading.Lock() # 循環(huán)一次給全局變量加1 def sum_num1(): # 上鎖 lock.acquire() for i in range(1000000): global g_num g_num += 1 print("sum1:", g_num) # 釋放鎖 lock.release() # 循環(huán)一次給全局變量加1 def sum_num2(): # 上鎖 lock.acquire() for i in range(1000000): global g_num g_num += 1 print("sum2:", g_num) # 釋放鎖 lock.release() if __name__ == '__main__': # 創(chuàng)建兩個(gè)線程 first_thread = threading.Thread(target=sum_num1) second_thread = threading.Thread(target=sum_num2) # 啟動(dòng)線程 first_thread.start() second_thread.start() # 提示:加上互斥鎖,那個(gè)線程搶到這個(gè)鎖我們決定不了,那線程搶到鎖那個(gè)線程先執(zhí)行,沒(méi)有搶到的線程需要等待 # 加上互斥鎖多任務(wù)瞬間變成單任務(wù),性能會(huì)下降,也就是說(shuō)同一時(shí)刻只能有一個(gè)線程去執(zhí)行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2. 小結(jié)
互斥鎖的作用就是保證同一時(shí)刻只能有一個(gè)線程去操作共享數(shù)據(jù),保證共享數(shù)據(jù)不會(huì)出現(xiàn)錯(cuò)誤問(wèn)題
使用互斥鎖的好處確保某段關(guān)鍵代碼只能由一個(gè)線程從頭到尾完整地去執(zhí)行
使用互斥鎖會(huì)影響代碼的執(zhí)行效率,多任務(wù)改成了單任務(wù)執(zhí)行
互斥鎖如果沒(méi)有使用好容易出現(xiàn)死鎖的情況
Python 任務(wù)調(diào)度
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。