假設你傳遞一個數組作爲參數傳遞給一個給定的方法,比方說,鎖定和驗證或鎖定?
public static DoSomething (string[] array)
{
// Do something with array here.
}
並且該方法中使用的一些指令將拋出一個異常,如果array
包含無效數據。在多線程環境下,多線程可能正在訪問array
,應該按照什麼順序進行?
1)鎖定陣列,以確保只有一個線程就可以同時操作,並且,鎖定後,驗證它,只要你完成工作釋放鎖;或
2)立即檢查數組的有效性,並在情況下,它是有效的,鎖定它,做你的工作。
當然,如果所有的線程是*讀者* ,它可能是你不需要任何鎖; p –
並且不要鎖定陣列本身。鎖定其他人知道的對象通常是一個壞主意。 – CodesInChaos
@CodeInChaos你可能會說,這鎖沒* *人知道對象是有點兒毫無意義...... –