我從多個線程調用一個簡單字符串串聯函數。我認爲應該鎖定它。用鎖或無鎖進行了許多測試。它從未失敗。是否鎖定:並行字符串串聯
我的問題是:字符串連接是否必須鎖定?
private readonly object idLock = new object();
private string GetId(string input1, string input2, string input3)
{
lock (idLock)
return string.Format("{0}; {1}; {2}", input1, input2, input3);
}
我用PLINQ - 10000000個週期測試了以下變體。時間以毫秒爲:
// Time 5446
lock (idLock)
return string.Format("{0}; {1}; {2}", input1, input2, input3);
// Time 3728
lock (idLock)
return input1 + "; " + input2 + "; " + input3;
// Time 953
return string.Format("{0}; {1}; {2}", input1, input2, input3);
// Time 652
return input1 + "; " + input2 + "; " + input3;
完整的測試代碼是在這裏:Test Parallel String Concatenation
+1謝謝。非常有建設性的答案。我記得現在我已經閱讀過。 –