不好意思問這個問題,我一直在谷歌搜索一下,但似乎是克隆或複製方法的參考,而不是在C#
我的問題的實際答案。C#:將數組分配給另一個數組:複製或指針交換?
我有兩個字節數組,他們正在被兩個線程訪問。
private byte[] buffer1 = new byte[size];
private byte[] buffer2 = new byte[size];
我的目標是在buffer1
寫在Thread1
,搶互斥,開關周圍的指針和重複這個過程。 Thread2
會抓住一個互斥體,並總是讀取buffer2
。
目標是Thread2
運行速度很快,並且不受在Thread1
中進行復制的影響。
我很清楚,當我做下面會發生什麼:
byte[] temp = buffer1;
buffer1 = buffer2;
buffer2 = temp;
是指針被切換或複製到buffer1
的buffer2
的內容?這應該是一個簡單的問題,但我似乎無法找到解決方案。 Thread1
正在做Marshal.Copy()
,我不希望該調用影響Thread2
。
你有沒有試過做一些測試,看看會發生什麼? :) – 2015-04-01 19:09:57
在你的代碼片段'buffer1'和'buffer2'結束引用到相同的數組。我假設你打算在經典交換中使用'temp'。 – 2015-04-01 19:11:47
馬上編輯它,謝謝:)我錯誤地複製了那個。 – Jary316 2015-04-01 19:17:20