学习多线程之前我们先了解一下电脑的一些概念,比如进程,线程,这个参考https://www.cnblogs.com/loverwangshan/p/10409755.html 这篇文章。今天我们接着来介绍同步方法和异步方法。
一:同步方法:在程序继续执行之前需要等待同步方法执行完毕返回结果
通俗的例子就是: 邀请wss次饭,wss要忙一会儿,邀请人等着wss完成后,再一起去吃饭,这就是所谓的诚心诚意的请人吃饭。下面我通过代码来举例来说明一下同步方法:
1 /// <summary> 2 /// 一个比较耗时耗资源的私有方法 3 /// </summary> 4 /// <param name="name"></param> 5 private void DoSomethingLong(string name) 6 { 7 Console.WriteLine($"******DoSomethingLong Start {name} {Thread.CurrentThread.ManagedThreadId.ToString("00")} {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}*******"); 8 long lResult = 0; 9 for (int i = 0; i < 1_000_000_000; i++) 10 { 11 lResult += i; 12 } 13 Console.WriteLine($"*****DoSomethingLong End {name} {Thread.CurrentThread.ManagedThreadId.ToString("00")} {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")} {lResult}*********"); 14 } 15 16 /// <summary> 17 /// 同步方法 18 /// </summary> 19 private void syncWay() 20 { 21 Console.WriteLine($"******同步方法开始执行,执行线程ID:【{Thread.CurrentThread.ManagedThreadId.ToString("00")}】,执行开始时间:【 {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}】*****"); 22 for (int i = 0; i < 5; i++) 23 { 24 string name = string.Format($"sysnc_{i}"); 25 this.DoSomethingLong(name); 26 } 27 Console.WriteLine($"****同步方法执行结束,执行线程ID:【{Thread.CurrentThread.ManagedThreadId.ToString("00")}】,执行开始时间:【 {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}】******"); 28 }