線程同步
保證同一時刻只能有一個線程去操作全局變量同步:就是協(xié)同步調(diào)按預(yù)定的先后次序進(jìn)行運行
比如如:你說完,我再說,好比現(xiàn)實生活中的對講機
線程同步的方式
1.線程等待(join)
2.互斥鎖:對共享數(shù)據(jù)進(jìn)行鎖定,保證同一時刻只有一個線程去操作
注意:互斥鎖是多個線程一起去搶,搶到鎖的線程先執(zhí)行(誰先搶到不知道),沒有搶到鎖的線程需要等待,等互斥鎖使用完釋放后,其它等待的線程再去搶這個鎖.
互斥鎖的使用步驟:
# 創(chuàng)建鎖
mutex = threading.Lock()
# 上鎖
mutex.acquire()
#這里編寫代碼保證同一時刻只能有一個線程去操作,對共享數(shù)據(jù)進(jìn)行鎖定
# 排放鎖
mutex.release()
注意點:
acquire和 release方法之間的代碼同一時刻只能有一個線程去操作
如果在調(diào)用 acquire方法的時候其他線程已經(jīng)使用了這個互斥鎖,那么此時 acquire方法會堵塞,直到這個互斥鎖釋放后才能再次上鎖。