| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> PHP学习笔记18:协程 -> 正文阅读 |
|
[PHP知识库]PHP学习笔记18:协程 |
PHP学习笔记18:协程图源:php.net 正如Python关于协程的PEP所讲,异步编程和并发已经是编程的一个热门领域,所以无论是老派语言如Python,或者是新语言Go,要么是添加新特性以支持协程,要么是天生就对协程和并发有完整支持。 但在这方面php就相当落(la)后(kua)了。 或许这和语言的应用领域和使用方式有一些关系,php作为一个和Apache等web service紧密结合的Web开发语言,绝大部分php项目都是依托于web service处理和转发请求的,php本身并不需要花大力气去管理并发和进程,至少开发者不需要。这也就意味着协程和并发对传统的php项目可有可无。 但这也不完全没有用途,否则Swoole也就不会有商业价值。在某些追求高并发高性能而抛弃web service直接监听TCP套接字进行服务的场景(比如游戏或即时聊天服务器等),就需要协程了,而Swoole的价值正在于此。 幸运的是php8.1正式引入了一个核心的协程机制:内置的 虽然围绕该提案有很多讨(si)论(bi),但至少必须要引入协程这是绝大多数人的观点,至于是仅引入一个最小核心类 如果你还不知道什么是协程以及协程的基本概念,可以阅读Python学习笔记33:协程,虽然那篇文章讨论的是Python的协程,但其实和php的协程概念是几乎一致的,毕竟本质上Python和php一样是单线程的。 这里我会提供一个使用协程的案例,分别用php、Go lang、Python实现,以对比它们之间的差异。 php
这里创建了三个协程:
php的协程是新引入的 php的协程由 这也是为什么 在这个示例中协程 我这里使用向外传递一个 我这里讲的还是很笼统,建议阅读Python学习笔记33:协程,我使用了时序图来说明协程的调用机制。 Python
Python和php的协程非常相似,不过Python并没有选择使用新的类型或者关键字,而是直接让生成器演化为协程。此外Python用 Go lang
Go语言和前两者差别有点大,因为Go是支持多线程的,Go的协程其实叫做“Goroutine”而非"Coroutine"。goroutine是真正的多线程,只不过可以通过非缓冲通道来同步,这样就表现得像是普通协程。在使用非缓冲通道的时候,上面的异步代码大致执行过程和前两者是类似的。只不过Go需要添加一个 参考资料往期内容 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 20:41:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |