串行和并行

1.先要理解并行和并发的区别:

例子:一个打卡机:一条队伍排队打卡,如果把队伍分成两条对方交替打卡。这种情况叫并发   ! 

           一个打卡机:一条队伍排队打卡,如果把打卡机弄成两台去打卡。这种情况叫并行 !

            多线程理解为队伍,cup理解为打卡机!细想 哈

2.串行和并行的区别:

      串行一个个来,并行一起来 哈

  

例子实现: ConcurrentBag<T> 为线程安全集合 List<T> 非线程安全集合

复制代码

 private static void Run1()
 {
  Console.WriteLine("任务1:3s");
  Thread.Sleep(3000);
 }

 private static void Run2()
 {
  Console.WriteLine("任务2:5s");
  Thread.Sleep(5000);
 }

 private static void ParallerTest01()
 {
  var watch = Stopwatch.StartNew();
  watch.Start();
  Run1();
  Run2();
  Console.WriteLine("串行耗时:{0}", watch.ElapsedMilliseconds);

  watch.Restart();
  Parallel.Invoke(Run1, Run2);
  Console.WriteLine("并行耗时:{0}", watch.ElapsedMilliseconds);
  Console.Read();
 }

 private static void ParallerTest02()
 {
 for (var j = 1; j < 5; j++)
 {
  Console.WriteLine("第{0}次循环", j);

 #region 并行
  var bag = new ConcurrentBag<int>();
  var watch = Stopwatch.StartNew();
  watch.Start();
  Parallel.For(0, 20_000_000, i =>
  {
   bag.Add(i);
  });
 Console.WriteLine($"并行耗时:{watch.ElapsedMilliseconds}");
 #endregion

 #region 串行
  var bag1 = new ConcurrentBag<int>();
  watch = Stopwatch.StartNew();
  watch.Start();
 for (var i = 0; i < 20_000_000; i++)
 {
 bag1.Add(i);
 }

 Console.WriteLine($"串行耗时:{watch.ElapsedMilliseconds}");
 #endregion
 }
}

复制代码

 

posted @   根仔  阅读(693)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示