workerman的多线程版本,可不可以用swoole v6的多线程

happy321

swoole v6发布了多线程
https://mp.weixin.qq.com/s/HzPEg7g3PuN2Xky4EQfnHw
可不可以借助这个,重新启动workerman的多线程版本
这样可以多开几个线程跑任务,不怕进程被占用光了
还有请问这个线程之间是相互隔离,没有使用负担的吗

215 2 0
2个回答

happy321
chaz6chez

可不可以借助这个,重新启动workerman的多线程版本

这个需要运行在zts的环境下,workerman目前不支持zts环境,多线程版本需要对workerman底层做较大的改动,并且与进程版本互不兼容,精力有限

这样可以多开几个线程跑任务,不怕进程被占用光了

多线程会比多进程在性能上损耗10-20%,另外线程虽然调度资源比进程轻,但也不是真的可以随意的弹性伸缩

还有请问这个线程之间是相互隔离,没有使用负担的吗

zts版本PHP就是会对全局变量进行拷贝,整体使用跟进程没区别,swoole v6提供了可以线程间通讯的map和array list,这一部分需要自行使用锁或者信号量来进行处理;

完整的多线程编程还需要条件变量、互斥锁、信号量、事件等,罗马并不是一天就建立的

最后结论,如果想直接使用多线程,建议直接使用swoole v6 + zts php即可

×
🔝