0
最近我遇到的代碼來如下:線程同步:具有自己的字符串類型的鎖副本線程
void CallThisInDifferentThreads(Return return)
{
var lock = "lock";
lock(lock)
{
//Do something here.
}
}
我的第一反應是,在該代碼鎖不會,因爲我們正在創建的鎖定工作並以相同的方法使用它。每個調用這個方法的線程都有自己的鎖副本,所以不會有同步。
但後來我意識到這應該工作,因爲字符串轉到字符串池,並且只有一個特定字符串的實例。我不確定如果我是對的。
你需要讓鎖「靜態」,所以每個線程可以訪問它。 –
「因爲字符串轉到字符串池」 - 字符串可能會或可能不會被實施。你的代碼不應該依賴你的字符串被執行。 – dcastro