我知道何時在C#中使用鎖定塊,但是我不清楚的是鎖定語句括號中的lock variable
。考慮以下Singleton Design Pattern
從DoFactory:在上面的代碼C#中的鎖定變量#
class LoadBalancer
{
private static LoadBalancer _instance;
private List<string> _servers = new List<string>();
private static object syncLock = new object();
public static LoadBalancer GetLoadBalancer()
{
// Support multithreaded applications through
// 'Double checked locking' pattern which (once
// the instance exists) avoids locking each
// time the method is invoked
if (_instance == null)
{
lock (syncLock)
{
if (_instance == null)
{
_instance = new LoadBalancer();
}
}
}
return _instance;
}
}
,我不明白爲什麼我們不鎖變量,而不是`SYNCLOCK使用_instance
?
爲什麼編譯器使用syncLock?這個變量有什麼好處? –
@SeyedMortezaMousavi:你是什麼意思「爲什麼編譯器使用syncLock?」它不是編譯器,它是開發人員......關鍵是確保只有一個線程輸入創建LoadBalancer實例的代碼。 –
你需要鎖定一個對象。這就是它的全部。 –