php 协程 有什么用,PHP 协程是什么意思?-PHP问题

gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

PHP 协程是甚么意义?

PHP协程就相称于线程,线程意义就是正在切换线程上下文时,要先保留上一个线程的上下文,而后执行下一个线程,当前提餍足时,切换回上一个线程,并规复上下文,协程也是这样,只不外协程是由用户调剂的,而线程是零碎调剂的。

PHP 协程用法

协程的支持是正在迭代天生器的根底上, 添加了能够回送数据给天生器的性能(挪用者发送数据给被挪用的天生器函数). 这就把天生器到挪用者的单向通讯转变成二者之间的双向通讯.

通报数据的性能是经过迭代器的send()办法完成的. 上面的logger()协程是这类通讯若何运转的例子:

function logger($fileName) {

$fileHandle = fopen($fileName, 'a');

while (true) {

fwrite($fileHandle, yield . "\n");

}

}

$logger = logger(__DIR__ . '/log');

$logger->send('Foo');

$logger->send('Bar')

?>

正如你能看到,这儿yield不作为一个语句来应用, 而是用作一个表白式, 即它能被演变成一个值. 这个值就是挪用者通报给send()办法的值. 正在这个例子里, yield表白式将起首被"Foo"代替写入Log, 而后被"Bar"代替写入Log.

下面的例子里演示了yield作为承受者, 接上去咱们看若何同时进行接纳以及发送的例子:

function gen() {

$ret = (yield 'yield1');

var_dump($ret);

$ret = (yield 'yield2');

var_dump($ret);

}

$gen = gen();

var_dump($gen->current()); // string(6) "yield1"

var_dump($gen->send('ret1')); // string(4) "ret1" (the first var_dump in gen)

// string(6) "yield2" (the var_dump of the ->send() return value)

var_dump($gen->send('ret2')); // string(4) "ret2" (again from within gen)

// NULL (the return value of ->send())

?>

要很快的了解输入的准确程序可能略微有点艰难, 但你确定要搞分明为什依照这类形式输入. 以便后续持续浏览.

另外, 我要特地指出的有两点:

第一点,yield表白式两边的括号正在PHP7之前没有是可选的, 也就是说正在PHP5.5以及PHP5.6中圆括号是必需的.

第二点,你可能曾经留意到挪用current()以前不挪用rewind().这是由于天生迭代工具的时分曾经隐含地执行了rewind操作.

保举教程:《PHP教程》

以上就是PHP 协程是甚么意义?的具体内容,更多请存眷资源魔其它相干文章!

本网站(www.ziyuanmo.com)刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等均由用户发表。

虚拟收费资源付款后概不退款,请考虑在三后支付!如有侵权可联系邮箱:ziyuanmo@admin.com,会在第一时间解决!

资源猫 » PHP 协程是什么意思?-PHP问题

分享到:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值