有意思的php多线程扩展 pthreads

本文分享了一个Windows小项目中使用PHP多线程的实践经验,重点介绍了pthreads的使用限制,包括主线程创建子线程的要求及线程变量命名冲突导致的执行问题。

最近有个windwos小项目用到了php多线程,没什么可选的只能使用 pthreads,遇到一些有意思的小坑坑,记录下希望对读到的朋友有帮助。

1、只能在主线程创建子线程

我本来想把自己的一个class通过zephir编译成扩展,这部分代码刚好继承了thread,调用->start()提示错误。

2、两个线程变量名称一样,只能一个一个执行(阻塞)。
class cct extends Thread {
                private $c;
                
                function __construct($c){
                    $this->c=$c;
                }
                public function run() {
                    while($i++<10){
                        usleep(100000);
                        echo $this->c;
                    }
                }
            }
function mkt($c){
    $t = new cct($c);
    $t->start();
}
$a = new cct("a");
$a->start();
$a = new cct("b");
$a->start();

mkt("c");
mkt("d");

输出结果:aaaaaaaaaabcbcbcbcbcbcbcbcbcbcdddddddddd

所以,所有的线程必须提前建好,不可能后期在代码运行时随时生成,即使用eval也没用。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值