异步文件系统IO
最后更新于:2022-04-02 06:38:24
# 异步文件系统IO
[TOC]
> 异步文件系统仅限于4.3.0之前的版本,后续版本已经全面使用携程(coroutine)代替原有方案,具体参见:Coroutine模块
`Swoole`异步文件读写基于线程池同步`IO`模拟实现,文件读写请求投递到任务队列,然后由`AIO`线程读写文件,完成后通知主线程。
可使用`swoole_async_set`函数设置`AIO`线程数量,提高处理能力。请注意底层会在每个工作进程中分别创建`AIO`线程,因此假设设置了`worker_num = 10`和`thread_num = 10`,将会启动`100`个线程。
~~~
swoole_async_set([
'thread_num' => 16,
]);
~~~
## 冲突问题
请注意异步文件`IO`函数与`Swoole\Process`存在冲突,在创建线程池后如果调用`new Process`可能会导致多线程`fork`。
';