最近有个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