并行无序执行若干个传入不同标识的任务
Parallel.For(1, 10, x => { Thread.Sleep(1000); });
并行无序执行若干个任务
Parallel.Invoke(new Action[] {
() => { Thread.Sleep(1000); } ,
() => { Thread.Sleep(2000); } ,
() => { Thread.Sleep(3000); } ,
});
() => { Thread.Sleep(1000); } ,
() => { Thread.Sleep(2000); } ,
() => { Thread.Sleep(3000); } ,
});
设立同步条
Barrier wait = new Barrier(3);
Parallel.Invoke(new Action[] {
() => { Thread.Sleep(1000); wait.SignalAndWait();Thread.Sleep(1000);} ,
() => { Thread.Sleep(2000); wait.SignalAndWait();Thread.Sleep(2000);} ,
() => { Thread.Sleep(3000); wait.SignalAndWait();Thread.Sleep(3000);} ,
});
Parallel.Invoke(new Action[] {
() => { Thread.Sleep(1000); wait.SignalAndWait();Thread.Sleep(1000);} ,
() => { Thread.Sleep(2000); wait.SignalAndWait();Thread.Sleep(2000);} ,
() => { Thread.Sleep(3000); wait.SignalAndWait();Thread.Sleep(3000);} ,
});
任务并联
Task.Factory.StartNew(() =>
{
Task.Factory.StartNew(() => { Console.WriteLine(1); });
Task.Factory.StartNew(() => { Console.WriteLine(2); });
Task.Factory.StartNew(() => { Console.WriteLine(3); });
});
{
Task.Factory.StartNew(() => { Console.WriteLine(1); });
Task.Factory.StartNew(() => { Console.WriteLine(2); });
Task.Factory.StartNew(() => { Console.WriteLine(3); });
});
任务串联
var t1 = new Task(() => { Console.WriteLine(1); });
var t2 = t1.ContinueWith(x => { Console.WriteLine(2); });
var t3 = t2.ContinueWith(x => { Console.WriteLine(3); });
t1.Start();
var t2 = t1.ContinueWith(x => { Console.WriteLine(2); });
var t3 = t2.ContinueWith(x => { Console.WriteLine(3); });
t1.Start();
转载于:https://blog.51cto.com/szgamer/314502