using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
private Stopwatch stopWatch = new Stopwatch();
static void Main(string[] args)
{
new Program().ParallelInvokeMethod();
}
public void Run1(string name)
{
Stopwatch stopWatch1 = new Stopwatch();
Thread.Sleep(10);
stopWatch1.Start();
//for (int i = 0; i < 99999999; i++) { }
Console.WriteLine(name+", Task 1 is cost "+ stopWatch1.ElapsedMilliseconds + " sec");
//stopWatch1.Stop();
}
public void Run2(string last)
{
Thread.Sleep(20);
Stopwatch stopWatch2 = new Stopwatch();
stopWatch2.Start();
//for (int i = 0; i < 99999999; i++) { }
Console.WriteLine(last+", Task 2 is cost "+ stopWatch2.ElapsedMilliseconds + " sec");
//stopWatch2.Stop();
}
public void ParallelInvokeMethod()
{
stopWatch.Start();
String name = "XXX";
String last = "YYY";
Parallel.Invoke(()=>Run1(name), ()=>Run2(last));
stopWatch.Stop();
Console.WriteLine("并行 run " + stopWatch.ElapsedMilliseconds + " ms.");
stopWatch.Restart();
Run1(name);
Run2(last);
stopWatch.Stop();
Console.WriteLine("串行 run " + stopWatch.ElapsedMilliseconds + " ms.");
}
}
}
并发运行效果,比串行耗时还长,是因为创建了线程的时候需要耗时,那这个 Parallel.Invoke并行最多处理几秒钟以上的了,对于简单的并行是起不到效果。