异步文件系统IO

Swoole支持3种类型的异步文件读写IO,可以使用swoole_async_set来设置AIO模式。

swoole_async模块目前为实验性质,不建议在生产环境使用,请使用PHP的文件读写函数。

Linux原生异步IO

基于Linux Native AIO系统调用,是真正的异步IO,并非阻塞模拟。

优点:

缺点:

线程池模式异步IO

基于线程池模拟实现,文件读写请求投递到任务队列,然后由AIO线程读写文件,完成后通知主线程。AIO线程本身是同步阻塞的。所以并非真正的异步IO。

优点:

可修改thread_num项设置启用的AIO线程数量

缺点:

GCC线程池模拟异步IO

此模式与线程池模式异步IO的实现原理是一致的,底层使用了gcc提供的aio库。gcc的AIO库默认启动4个线程,而且无法设置。