多线程共享全局变量以及锁机制
生活随笔
收集整理的這篇文章主要介紹了
多线程共享全局变量以及锁机制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多線程都是在同一個進程中運行的。因此在進程中的全局變量所有線程都是共享的,這就造成一個問題,因為線程執行的順序是無序的,有可能會造成數據錯誤,為了解決這個問題,
threading提供了一個lock類,這個類可以在某個線程訪問某個變量時加鎖,其他線程此時不能進來,直到當前線程處理完后,把鎖釋放后,其他想線程才能進來處理。
示例代碼如下:
#encoding: utf-8
import threading
VALUE = 0
gLock = threading.Lock()
def add_value():
global VALUE #引用全局變量VALUE
gLock.acquire() #加鎖,在全局變量改變運用
for x in range(10000000):
VALUE +=1
gLock.release() #解鎖
print('value:%d'%VALUE)
def main():
for x in range(2):
t = threading.Thread(target=add_value())
t.start()
if __name__ == '__main__':
main()
轉載于:https://www.cnblogs.com/cyz123/p/10637548.html
總結
以上是生活随笔為你收集整理的多线程共享全局变量以及锁机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces Round #55
- 下一篇: 好听的男孩名字姓金