object部类和多线程有什么关系哈
object类型和多线程有什么关系哈?
//有"同步"和"异步"两个版本类型的类:
//有"同步"和"异步"两个版本类型的类:
class Demo {
private ShareState _state;
public Demo() {
}
public Demo(ShareState state) {
this._state = state;
}
public virtual void DoTheJob() { //异步方法.
for(int i = 0; i < 50000; i++) {
//lock(_state) //记住在这里也要同步(一个任务不一定是一个线程).
_state.IncreaseState();
}
}
public static Demo Synchronized(Demo demo) { //同步对象.
if(!demo.IsSynchronized) return new SynchronizationDemo(demo);
return demo;
}
public virtual bool IsSynchronized { //异步属性.
get { return false; }
}
private class SynchronizationDemo : Demo {
private object syncRoot = new object(); //用于同步的对象.
private Demo d;
public override bool IsSynchronized { //同步属性.
get {
return true;
}
}
public override void DoTheJob() { //同步方法.
lock(syncRoot) {
d.DoTheJob();
}
}
public SynchronizationDemo(Demo d) {
this.d = d;
}
}
}