lock (this) {
for (int i = 0; i < 10000; i++) { ... }
}
lock(this) 是反模式,原因:
lock(obj),導致非預期阻塞或死鎖。lock(typeof(MyType))、lock("string") 同理,鎖對象不可控。private readonly object _lockObj = new object();
public void Count() {
lock (_lockObj) {
// 临界區代碼
}
}
私有 readonly 對象確保鎖不可見、不可被外部竊用,保證同步安全。
參考:MSDN 官方指南