有意思的php多线程扩展 pthreads
2019-09-23 本文已影响0人
Spooking
最近有个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也没用。