簡體   English   中英

c#基本數組易變嗎?

[英]are c# primitive arrays volatile?

我聲明像private double[] array = new double[length] 在一個線程中更新此數組項並在另一個線程中進行讀取是否安全? 我會擁有最新的價值嗎?

注意我不列舉數組。 我僅按索引訪問其項目。

來自MSDN的數組不是線程安全的:

通過集合進行枚舉本質上不是線程安全的過程。 即使同步了一個集合,其他線程仍然可以修改該集合,這將導致枚舉器引發異常。 為了保證枚舉期間的線程安全,您可以在整個枚舉期間鎖定集合,也可以捕獲由其他線程進行的更改導致的異常。

如果您一次只更新單個項目,我認為您將是安全的,但是除非找到能夠證明這一點的文檔,否則我將不信任它。

揮發性不保證價值的新鮮度。 它阻止了一些優化,但不保證線程同步。

Double不保證會自動進行原子更新 因此,不同步就更新/讀取雙精度數組將根本不是線程安全的,也不是不穩定的,因為您可能會讀取部分寫入的值。

不,他們不是。 您應使用信號量或其他方法設計鎖定系統,以確保線程安全。 您可以檢查生產者/消費者問題

暫無
暫無

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

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