當有1000個線程同時執行i++操作時,i變量的副本拷貝到每個線程的線程棧,當同時有兩個線程以上的線程讀取線程變量,比如此時是5,那么同時執行i++操作,再寫入到全局變量,最后,兩個線程跑完了,這個i還是6,而並不會是7,所以,出現不安全性。
一個線程對共享數據的寫操作是分兩步的,1.讀到線程棧。2.寫入變量。另一個寫線程,再這兩步之間插一腳。
當有1000個線程同時執行i++操作時,i變量的副本拷貝到每個線程的線程棧,當同時有兩個線程以上的線程讀取線程變量,比如此時是5,那么同時執行i++操作,再寫入到全局變量,最后,兩個線程跑完了,這個i還是6,而並不會是7,所以,出現不安全性。
一個線程對共享數據的寫操作是分兩步的,1.讀到線程棧。2.寫入變量。另一個寫線程,再這兩步之間插一腳。
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。