/// <summary> /// C#为多个线程的同步提供了自己的关键字:lock语句。lock语句是设置锁定和解除锁定的一种简单方式。 /// </summary> static void SyncSample() { // 创建一个SharedState对象,并把它传递给20个Task对象的构造函数 int numTasks = 20; var state = new SharedState(); var tasks = new Task[numTasks]; // 因为执行了50000次循环,有20个任务,所以写入控制台的值应是1000000。但是,事实常常并非如此 for (int i = 0; i < numTasks; i++) { tasks[i] = Task.Run(() => new Job(state).DoTheJob()); } for (int i = 0; i < numTasks; i++) { tasks[i].Wait(); } Console.WriteLine("summarized {0}", state.State); }
public Job(SharedState sharedState) { this.sharedState = sharedState; }