学习多线程之前我们先了解一下电脑的一些概念,比如进程,线程,这个参考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 }
View Code

相关文章: