日期:2014-05-17 浏览次数:21044 次
//同步方式:
ShareState state = new ShareState(); //用于同步(锁定)的对象.
int numTask = 20;
Task[] tasks = new Task[numTask]; //任务数组.
for(int i = 0; i < tasks.Length; i++) {
Demo d = new Demo(state);
d = Demo.Synchronized(d); //同步对象.
tasks[i] = new Task(d.DoTheJob);
tasks[i].Start();
}
for(int i = 0; i < tasks.Length; i++)
tasks[i].Wait();
/*有个网友和我说:
for语句最好改为(因为Task的Start不一定马上启动,但是i此时已经++了,可能产生同步性问题)。
for (int i = 0; i < tasks.Length; i++)
{
int j = i;
Demo d = new Demo(state);
d = Demo.Synchronized(d); //同步对象.
tasks[j] = new Task(d.DoTheJob);
tasks[j].Start();
}
我觉得这个是多余的,就算是延迟..但是它的值还是不变的,不是么...比如,这里赋值为 tasks[1].Start();(这个延迟,还没有启动).然后下一个 tasks[2].Start()开始启动...但是他们的赋值...不会影响到对方的,在内存中只是等待状态而已...对吧...
*/