张晓杰
张晓杰
感觉完全没必要。 fiber 就解决了代码可手动中断的问题。实际上使用生成器一样能办到。遇到阻塞 IO 还是和以前一样。
> swoole >= 4.6.x The latest swoole does not support CURL_MULTI_XX https://wiki.swoole.com/#/runtime?id=swoole_hook_curl now supportted .
问个无关的问题哈。Swoole 是通过 hook 阻塞方法实现的协程调度,Swow 是怎么做到遇到 sleep 这样的阻塞方法发生协程调度的?
> > 问个无关的问题哈。Swoole 是通过 hook 阻塞方法实现的协程调度,Swow 是怎么做到遇到 sleep 这样的阻塞方法发生协程调度的? > > 我不太清楚你说的hook是指什么 如果指的是php函数“zif_sleep()” 被换成了sw*的函数"zif_sw*_sleep()" 那sw*的做法是一致的 > > 如果你问的是实现它们的东西: > > php本身是调用sleep(unix)/Sleep函数(windows),操作系统会暂停当前线程,吧cpu用于其他线程 swow是通过注册libuv(libcat)的回调来实现: libuv则是通过epoll、iouring、kqueue、iocp等异步io机制注册回调,然后libcat选择去执行另一个(可能是sleep完事的 可能是fd可读的)协程 swoole我不太清楚,估摸着也大差不差 只不过中间层是libswoole 好的,谢谢。看来处理阻塞方法:sleep、pdo、fopen、fread 等等,swow 和 swoole...