目前可用的核心能力包括:
- `Coroutines`:通过 `spawn()` 启动异步任务
- `Future`:一种更便于处理异步结果的 Promise 变体
- `Awaiting`:包括 `比如,用 `CURL` 下载文件、上传文件到远程服务器,这些流程过去都严格运行在同步阻塞模型中。现在语言核心已经可以异步执行,那么 `CURL` 也必须一并纳入这套机制。'speed' => round($info['speed_download'] / 1024, 1) . ' KB/s',
];
}
```
要让这 `20` 个下载任务并发执行事务会互相交错,数据会丢失,一个协程的 `COMMIT` 甚至可能提交另一个协程的改动,这本质上就是典型的数据竞争。事务天然隔离;如果某个协程结束前没有显式调用 `commit()`,连接池还会自动执行回滚。