2012-02-15 61 views
1

可能重複:
Are C# arrays thread safe?C#,多維數組的多線程填充

我有一個程序,它是單線程的時刻,基本上把大量計算數據的成一個多維數組(例如double [,]; string [,])。

是否可以將此數組的段分配給不同的線程?更確切地說,如果我確保只有一個線程將在給定座標上寫入,是否會觸發某種鎖定機制?

回答

2

如果我要確保只有一個線程將寫一個給定的座標

那你是安全的。假設你沒有調整陣列等

如果你現在使用的是for循環你可能只需切換到Parallel.For(0, n, method)

3

在併發性問題方面,你會被罰款,只要你的線程不會讀取或寫入陣列的同一部分。但是,由於「False Sharing」危險,您可能會看到速度減慢,因此當線程數增加時,您可能希望監視意外的減速。