hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP框架 - Swoole - 正文 请牢记本站网址www.sosophp.cn

swoole协程如何完成【swoole】,swoole,协程,实现

2019-12-11Swoole搜搜PHP网50°c
A+ A-

Swoole4为PHP言语供应了壮大的CSP协程编程形式,用户能够经由过程go函数建立一个协程,以到达并发实行的效果,如下面代码所示:

<?php
//Co::sleep()是Swoole供应的API,并不会壅塞当前历程,只会壅塞协程触发协程切换。
go(function (){
    Co::sleep(1);
    echo "a";
});
go(function (){
    Co::sleep(2);
    echo "b";
});
echo "c";
//输出效果:cab
//顺序总实行时间2秒

其实在Swoole4之前就完成了多协程编程形式,在协程建立、切换以及完毕的时刻,响应的操纵php栈即可(建立、切换以及接纳php栈)。

此时的协程完成没法圆满的支撑php语法,其根本原因在于没有保留c栈信息。(vm内部或许某些扩大供应的API是经由过程c函数完成的,挪用这些函数时假如发作协程切换,c栈该如何处置惩罚?)

Swoole4新增了c栈的治理,在协程建立、切换以及完毕的同时会伴随着c栈的建立、切换以及接纳。

Swoole4协程完成计划如下图所示:

个中:

·API层是供应给用户运用的协程相干函数,比方go()函数用于建立协程;Co::yield()使得当前协程让出CPU;Co::resume()可恢复某个协程实行;

·Swoole4协程须要同时治理c栈与php栈,Coroutine用于治理c栈,PHPCoroutine用于治理php栈;个中Coroutine(),yield(),resume()完成了c栈的建立以及换入换出;create_func(),on_yield(),on_resume()完成了php栈的建立以及换入换出;

·Swoole4在治理c栈时,用到了 boost.context库,make_fcontext()和jump_fcontext()函数均运用汇编言语编写,完成了c栈上下文的建立以及切换;

·Swoole4对boost.context进行了简朴封装,即Context层,Context(),SwapIn()以及SwapOut()

对应c栈的建立以及换入换出。

ki4网,有大批免费的Swoole入门教程,迎接人人进修!

以上就是swoole协程如何完成的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
swoole协程如何完成【swoole】,swoole,协程,实现

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章