【发布时间】:2008-09-03 14:28:57
【问题描述】:
我正在重构一些代码,并且想知道在实例构造函数中使用lock。
public class MyClass {
private static Int32 counter = 0;
private Int32 myCount;
public MyClass() {
lock(this) {
counter++;
myCount = counter;
}
}
}
请确认
- 实例构造函数是线程安全的。
- lock 语句阻止访问该代码块,而不是静态“计数器”成员。
如果原始程序员的意图是让每个实例都知道它的“计数”,我将如何同步对“计数器”成员的访问以确保另一个线程不是新的 MyClass 并更改在这个设置计数之前计数?
仅供参考 - 这个类不是单例。实例必须知道它们的数量。
【问题讨论】:
标签: c# .net multithreading thread-safety