大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“swoole是不是多线程”,在日常操作中,相信很多人在swoole是不是多线程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”swoole是不是多线程”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
10年积累的成都网站设计、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计制作后付款的网站建设流程,更有西青免费网站建设让你可以放心的选择与我们合作。
swoole不是多线程的。因为PHP语言不支持多进程,所以swoole使用多进程模式,在多进程模式下存在进程内容隔离,在工作进程内修改global全局变量和超全局变量时,在其它进程是无效的。
本教程操作环境:Windows10系统、Swoole4版、DELL G3电脑
由于PHP语言不支持多线程,因此Swoole使用多进程模式。在多进程模式下存在进程内存隔离,在工作进程内修改global全局变量和超全局变量时,在其他进程是无效的。
swoole的多线程其实就是多进程,进程创建太多切换的开销很大,如果能用上pthreads建议用pthreads。
swoole实例如下:
useQueue(0, 2); $pid = $process->start(); // 管道写入内容 $process->write('index:'.$i); $process->push('进程的消息队列内容'); // 将每一个进程的句柄存起来 $workers[$pid] = $process; } /** * 子进程回调 * @param swoole_process $worker [description] * @return [type] [description] */ function callback_function(swoole_process $worker) { $recv = $worker->pop(); echo "子输出主内容: {$recv}".PHP_EOL; //get guandao content $recv = $worker->read(); $result = doTask(); echo PHP_EOL.$result.'==='.$worker->pid.'==='.$recv; $worker->exit(0); } /** * 监控/回收子进程 */ while(1){ $ret = swoole_process::wait(); if ($ret){// $ret 是个数组 code是进程退出状态码, $pid = $ret['pid']; echo PHP_EOL."Worker Exit, PID=" . $pid . PHP_EOL; }else{ break; } } /** * doTask * @return [type] [description] */ function doTask() { sleep(2); return true; }
到此,关于“swoole是不是多线程”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!