php8.1 的多并发纤程

315 天前
 zjsxwc

因为 php8.1 开始支持完整的协程 fiber , php4.0 开始已经支持register_tick_function

于是register_tick_function可以让 php 代码每执行一条语句就能回调到register_tick_function登记的回调函数里。

于是利用register_tick_function的回调函数,回调一个协程的调度功能的函数,来调度协程,就能实现在 php 进程里同时并发运行多个协程,实现类似 golang 纤程的功能。

当然和 golang 不能比,golang 可以把多个纤程分配在多个线程里,让一个线程并发执行多个纤程,而 php 不支持线程,只能在一个进程里同时并发运行多个纤程。

这个 php 官方文档评论里的就给了个例子:

https://www.php.net/manual/en/language.fibers.php#127282

php 不能让操作系统调度线程,确实是个遗憾,但可并发执行的协程确实一定程度上弥补了这个遗憾。

1124 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/953310

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX