並行無序執行若干個傳入不同標識的任務
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();