幾個(gè)相關(guān)的概念說明:
GIL: Global Interpreter Lock,全局解釋器鎖咕娄。為了解決多線程之間數(shù)據(jù)完整性和狀態(tài)同步的問題亥揖,設(shè)計(jì)為在任意時(shí)刻只有一個(gè)線程在解釋器中運(yùn)行。
線程:程序執(zhí)行的最小單位圣勒。
進(jìn)程:系統(tǒng)資源分配的最小單位费变。
線程安全:多線程環(huán)境中,共享數(shù)據(jù)同一時(shí)間只能有一個(gè)線程來操作圣贸。
原子操作:原子操作就是不會(huì)因?yàn)檫M(jìn)程并發(fā)或者線程并發(fā)而導(dǎo)致被中斷的操作挚歧。
重要結(jié)論:當(dāng)對(duì)全局資源存在寫操作時(shí),如果不能保證寫入過程的原子性吁峻,會(huì)出現(xiàn)臟讀臟寫的情況滑负,即線程不安全。Python的GIL只能保證原子操作的線程安全锡搜,因此在多線程編程時(shí)我們需要通過加鎖來保證線程安全橙困。
最簡(jiǎn)單的鎖是互斥鎖(同步鎖)
關(guān)于python中內(nèi)建數(shù)據(jù)類型的示例
http://effbot.org/pyfaq/what-kinds-of-global-value-mutation-are-thread-safe.htm