[英]are c# primitive arrays volatile?
我聲明像private double[] array = new double[length]
。 在一個線程中更新此數組項並在另一個線程中進行讀取是否安全? 我會擁有最新的價值嗎?
注意我不列舉數組。 我僅按索引訪問其項目。
來自MSDN的數組不是線程安全的:
通過集合進行枚舉本質上不是線程安全的過程。 即使同步了一個集合,其他線程仍然可以修改該集合,這將導致枚舉器引發異常。 為了保證枚舉期間的線程安全,您可以在整個枚舉期間鎖定集合,也可以捕獲由其他線程進行的更改導致的異常。
如果您一次只更新單個項目,我認為您將是安全的,但是除非找到能夠證明這一點的文檔,否則我將不信任它。
不,他們不是。 您應使用信號量或其他方法設計鎖定系統,以確保線程安全。 您可以檢查生產者/消費者問題 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.