2017-07-30 69 views
0

相同的項目,如果我有對將在不同的線程中運行循環下2:可能出現C#陣列2個線程讀取在同一時間

for (int ii = 1; ii < times.Length; ii+=2) 
{ 
    if (times[ii] - times[ii - 1] > maxGap) 
    return false; 
} 

for (int ii = 2; ii < times.Length; ii += 2) 
{ 
     if (times[ii] - times[ii - 1] > maxGap) 
     return false; 
} 

的情況下兩個線程試圖從一個項目閱讀times數組,例如,兩個線程可以同時嘗試並讀取times[1]

鑑於這兩個線程只會從這些數組讀取,這是一個問題,例如它可能會導致我的代碼崩潰或任何其他意想不到的負面後果?

+4

不。如果它是隻讀的,那麼沒有問題(當然沒有其他線程會寫入等等)。兩個寫入或讀寫組合將導致麻煩。 –

回答

5

如果只執行讀取操作,則不會有問題。 一起讀寫操作可能會導致問題。

+0

這是造成問題的共享寫入。多讀者總是安全的。如果寫入非重疊範圍的多個作者也是安全的。 –