使用 Object 的例項進行鎖定
當使用 C#的內建 lock
語句時,需要某種型別的例項,但其狀態無關緊要。object
的一個例項是完美的:
public class ThreadSafe {
private static readonly object locker = new object();
public void SomeThreadSafeMethod() {
lock (locker) {
// Only one thread can be here at a time.
}
}
}
NB 。Type
的例項不應該用於此(在 typeof(ThreadSafe)
上面的程式碼中),因為 Type
的例項是在 AppDomains 之間共享的,因此鎖的範圍可以包含它不應該包含的程式碼(例如,如果 ThreadSafe
被載入到兩個 AppDomain 中)相同的過程然後鎖定其 Type
例項將相互鎖定)。