线程调度
时间 ────────────────────────────────────────────────────────────────────────>
Thread A ──────────> ──────────> ──────────> 大量计算
│ ^ │ ^ │
v │ v │ v
Thread B ──────────> ──────────> ──────────> 长时间等待
Coroutine a ───────> ──────────> ─────────>
│ epoll 事件通知
v
Coroutine b (等待中...) ──────────>
yield
- 生成器
- 释放控制权,切换协程
线程安全
多个线程,操作一个数据的时候
timeline : timer 0 ─> timer 1 ─> timer 2 ─> timer 3
────────────────────────────────────────────────────────────────────────────────────────────────────>
MainThread: l = [1, 2, 3] │ │ │
thread A : │ read [1, 2, 3] │ append [1, 2, 3, 4] │
thread B : │ read [1, 2, 3] │ remove [1, 2] │ [1, 2]