同步和异步
写代码的时候看到但是想不起来,死脑快动,好吧原来我当时学java的时候就没听进去,只能补课了。真的是java吗,怎么操作系统也有,哲学家就餐问题……
- 定义
- 涉及什么问题,读写吗?
- 代码里面的效果
- 会被别的干扰吗?
定义
它们本质上和程序执行的方式有关 同步(synchronous)意味着代码按顺序执行,上一行没执行完,下一行就不会开始。一般代码就是同步执行的
异步(asynchronous)意味着代码不必等待耗时操作完成就可以继续执行其他任务。举例
输出是先打印一个1
2
3
4
5
6
7
8
9
10
11
12import asyncio
async def long_task():
await asyncio.sleep(2) # 模拟耗时操作
return "完成"
async def main():
print("开始")
result = await long_task() # 使用 await 暂停这里,去做别的事情
print("结果是", result)
asyncio.run(main())开始,过几秒再输出结果是 完成
本质上关注I/O 并发问题,而不是 CPU 计算本身。
异步
- 异步任务在等待时,可能被其他任务“插队”执行(事件循环调度)