什么是同步异步
举个例子:某天中午,你开始了一局游戏,刚开始没多久就听见了你妈喊你吃饭的声音,此时你有三个选择:
1、放下手机,去吃饭
2、打完这一局再去吃饭
3、边吃边玩
其中 1、2 属于同步,只有做完一件事才会去做另一件事
而 3 属于异步,同时进行多个任务
同步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public async Task PlayGame() { Console.WriteLine("游戏开始"); Thread.Sleep(5000); Console.WriteLine("游戏结束"); }
public async Task Eat() { Console.WriteLine("去吃饭"); }
public async Task<string> AsyncAndSync() { await PlayGame(); await Eat();
return "你打完游戏才吃饭,被你妈揍了一顿"; }
|
输出结果:
1 2 3 4
| 游戏开始 游戏结束 去吃饭 你打完游戏才吃饭,被你妈揍了一顿
|
异步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public async Task PlayGame() { Console.WriteLine("游戏开始"); Thread.Sleep(5000); Console.WriteLine("游戏结束"); }
public async Task Eat() { Console.WriteLine("去吃饭"); }
public async Task<string> AsyncAndSync() { var task1 = PlayGame(); var task2 = Eat();
await Task.WhenAll(task1,task2);
return "你边吃边玩游戏,又被你妈揍了一顿"; }
|
输出结果:
1 2 3 4
| 游戏开始 去吃饭 游戏结束 你边吃边玩游戏,又被你妈揍了一顿
|