while循环的影响
异步程序如果遇到死循环,事件将无法触发。异步IO程序使用Reactor模型
,运行过程中必须在reactor->wait
处轮询。如果遇到死循环,那么程序的控制权就在while中了,reactor
无法得到控制权,无法检测事件,所以IO事件回调函数也将无法触发。
密集运算的代码不是阻塞
实例程序
$serv = new swoole_server("127.0.0.1", 9501); $serv->on('receive', function ($serv, $fd, $from_id, $data) { while(1) { $i ++; } $serv->send($fd, 'Swoole: '.$data); }); $serv->start();
onReceive事件中执行了死循环,server在无法再收到任何客户端请求,必须等待循环结束才能继续处理新的事件。