icicleio / concurrent
Icicle 的并发组件。
v0.3.0
2016-01-15 19:07 UTC
Requires
- icicleio/icicle: ^0.9.1
- icicleio/stream: ^0.5.4
Requires (Dev)
- phpunit/phpunit: ^4.8
Suggests
- ext-pcntl: Required for fork contexts
- ext-pthreads: Required for thread contexts
- ext-sysvsem: Required for fork synchronization
- ext-sysvshm: Required for fork contexts
This package is auto-updated.
Last update: 2024-09-14 02:48:14 UTC
README
使用本地线程和多进程并行化代码,实现真正的并发,无需阻塞。
此库是 Icicle 的组件,提供原生线程、多进程、进程同步、共享内存和任务工作器。像其他 Icicle 组件一样,此库使用从 可等待对象 和 生成器 构建的 协程,使编写异步代码更像是编写同步代码。
此库提供了一种并行化代码的方法,而不会在您的应用程序中散布复杂的锁检查和进程间通信。
为了尽可能灵活,此库附带了一系列非阻塞并发工具,可以根据需要独立使用,还有一个“有观点”的工作 API,允许您将工作单元分配给工作线程或进程池。
文档和支持
要求
- PHP 5.5+ 用于 v0.3.x 分支(当前稳定版)和 v1.x 分支(镜像当前稳定版)
- PHP 7 用于 v2.0(master)分支,支持生成器委派和返回表达式
建议
- pthreads 扩展:PHP 中并发最佳扩展选项,但需要将 PHP 编译为
--enable-maintainer-zts
以启用线程安全。 - pcntl 扩展:启用分叉并发方法。
- sysvmsg 扩展:在分叉或进程之间共享内存所需。
安装
建议使用 Composer 包管理器安装。有关安装和使用 Composer 的信息,请参阅 Composer 安装指南。
运行以下命令以在项目中使用此包
composer require icicleio/concurrent
您还可以手动编辑 composer.json
以将此库添加为项目依赖项。
// composer.json { "require": { "icicleio/concurrent": "^0.3" } }
开发和贡献
有兴趣为 Icicle 做贡献吗?请参阅我们 贡献指南,位于 Icicle 仓库 中。
想要对源代码进行修改?仓库中提供了一个 Vagrant 虚拟机,以提供一个运行并发线程和进程的共同开发环境,并附带了一系列方便的工具和脚本,用于测试和实验。
启动和登录虚拟机的操作非常简单
vagrant up && vagrant ssh
一旦进入虚拟机,您可以使用 Pickle 安装 PHP 扩展,使用 newphp VERSION
切换版本,并使用 Valgrind 进行内存泄漏测试。