0%

同步异步

什么是同步异步

举个例子:某天中午,你开始了一局游戏,刚开始没多久就听见了你妈喊你吃饭的声音,此时你有三个选择:
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 表示程序需要执行完这个方法后才会继续,和同步没有区别
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();

// task1 和 task2 是异步执行的
await Task.WhenAll(task1,task2);

return "你边吃边玩游戏,又被你妈揍了一顿";
}

输出结果:

1
2
3
4
游戏开始
去吃饭
游戏结束
你边吃边玩游戏,又被你妈揍了一顿

欢迎关注我的其它发布渠道