我有一個程序,它是單線程的時刻,基本上把大量計算數據的成一個多維數組(例如double [,]; string [,])。
是否可以將此數組的段分配給不同的線程?更確切地說,如果我確保只有一個線程將在給定座標上寫入,是否會觸發某種鎖定機制?
我有一個程序,它是單線程的時刻,基本上把大量計算數據的成一個多維數組(例如double [,]; string [,])。
是否可以將此數組的段分配給不同的線程?更確切地說,如果我確保只有一個線程將在給定座標上寫入,是否會觸發某種鎖定機制?
如果我要確保只有一個線程將寫一個給定的座標
那你是安全的。假設你沒有調整陣列等
如果你現在使用的是for循環你可能只需切換到Parallel.For(0, n, method)
在併發性問題方面,你會被罰款,只要你的線程不會讀取或寫入陣列的同一部分。但是,由於「False Sharing」危險,您可能會看到速度減慢,因此當線程數增加時,您可能希望監視意外的減速。