9
我有一個管理共享資源的類。現在,由於對資源的訪問依賴於許多參數,因此在正常執行程序期間,該類將被實例化並處理好幾次。在非靜態類中鎖定靜態變量是否安全?
共享資源不支持併發,所以需要某種鎖定。那我腦子裏浮現的第一件事情是有一個靜態實例中的類,並且獲取鎖就可以了,就像這樣:
// This thing is static!
static readonly object MyLock = new object();
// This thing is NOT static!
MyResource _resource = ...;
public DoSomeWork() {
lock(MyLock) {
_resource.Access();
}
}
這是否有意義,或者你會用另一種方法?
我不會鎖定typeof(class),因爲如果其他人鎖定在同一類型上,可能會發生死鎖。至少,不要使用公共類型。 – driis 2010-04-01 13:51:06
@driis:同意,在答案中加了一個註釋。謝謝。 – 2010-04-01 14:01:33
對於「是的,你可以......」+1,對'typeof(class)'鎖定的建議,-1,所以總數爲0. – LukeH 2010-04-01 14:27:38