多執行緒共享變數 多執行緒共享全域性變數

2021-10-12 07:54:09 字數 437 閱讀 1114

1.多執行緒的執行順序是無序的

像2個人賽跑,乙個先跑乙個後跑,但根據每個人跑的速度不一樣,跑一半,二者可能跑在一起去了。

2.又因為多執行緒是共享乙個全域性變數的,就導致資料容易被弄髒

假如老闆讓兩個員工寫兩個主題ppt,若這兩個人沒商量好,都做了同乙個主題的ppt,導致不但速度很慢,且這個ppt有2個版本。老闆希望的是一人做乙個主題,那麼怎麼讓兩個人寫不同主題的ppt呢?

3.解決方法就是設立個規矩(鎖)

當乙個執行緒使用這個資料的時候,為了不讓別的執行緒使用,對這個資料上鎖,在處理完後,將其釋放

4.glock = threading.lock() 申明物件 #這是lock版本

glock.acquire()上鎖

glock.acquire()解鎖

!!!!!上鎖解鎖是很費電腦資源的,所以若只是引用資料而非改寫資料是不需要上鎖的

多執行緒共享變數

題目如下 設計4個執行緒,其中兩個執行緒每次對j增加1,另外兩個執行緒對j每次減少1。如果每個執行緒執行的 相同 可以使用同乙個runnable物件,這樣在不同的執行緒中只需要把這個runnable物件傳到裡面去即可,因為runnable物件的run方法天熱原子性,不可能run方法被打斷,乙個run...

多執行緒共享變數

from threading import thread,lock global num 0 def func1 global global num 全域性變數 for i in range 1000000 lock.acquire 兩個執行緒會最開始搶這個鎖,拿到鎖就會處於關鎖,執行後面的程式,其...

多執行緒 共享全域性變數問題

多執行緒 共享全域性變數問題 多執行緒開發可能遇到的問題 假設兩個執行緒t1和t2都要對全域性變數g num 預設是0 進行加1運算,t1和t2都各對g num加10次,g num的最終的結果應該為20。但是由於是多執行緒同時操作,有可能出現下面情況 在g num 0時,t1取得g num 0。此時...