同步和异步

写代码的时候看到但是想不起来,死脑快动,好吧原来我当时学java的时候就没听进去,只能补课了。真的是java吗,怎么操作系统也有,哲学家就餐问题……

  1. 定义
  2. 涉及什么问题,读写吗?
  3. 代码里面的效果
  4. 会被别的干扰吗?

定义

它们本质上和程序执行的方式有关 同步(synchronous)意味着代码按顺序执行,上一行没执行完,下一行就不会开始。一般代码就是同步执行的

异步(asynchronous)意味着代码不必等待耗时操作完成就可以继续执行其他任务。举例

1
2
3
4
5
6
7
8
9
10
11
12
import 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 计算本身。

异步

  • 异步任务在等待时,可能被其他任务“插队”执行(事件循环调度)