簡體   English   中英

多個線程同時讀取靜態變量

[英]Multiple threads reading static variable at the same time

我的問題可能是新手或重復,但我想知道當幾個線程同時嘗試讀取靜態變量時會發生什么。 我現在對同步並不感興趣,我只是想知道他們是立即還是輪流閱讀?

更新:我的問題更多的是物理領域或類似的那樣(=如果它是線程讀取變量的同一時刻。

如果變量的值沒有改變(任何線程沒有寫入值),那么多線程讀取將是一個安全的操作,並且不需要像鎖定那樣的額外同步。 否則,您必須考慮鎖定寫訪問操作。

更新:關於問題更新

物理上在單核CPU的范圍內,只能執行一條指令(簡化,忽略CPU流水線),因此沒有機會在相同的時間內訪問相同的存儲單元。

他們無法真正同時訪問它 - 在某些時候CPU會對讀取進行排序。

如果它是一個讀取的靜態類型去處理器核心(在所有平台上)那么它是一個原子操作。 如果它是一個較大的類型,需要多個操作來讀取或寫入,那么它不是原子的,您可以讀取在您讀取/寫入時部分更改它的另一個線程的產品的狡猾值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM