刚刚得到PHP pthreads错误
pthreads检测到无法启动多线程,系统缺少必要的资源或超出系统强加的限制
和
无法初始化zend_mm存储[win32]
在我的剧本中......
PHP代码如下所示:
class multihread extends Worker {
public $result;
function __construct($e) {
$this->e = $e;
}
public function run() {
$this->result=file($this->e);
}
}
$threads = 15;
do {
for($i=1; $i<=$threads; $i++) {
if(empty($thread[$i])){
$e=generate_e($i);
if($e==false){
echo "Warning: no more job for e. exiting A"; exit;
}
echo "Starting new thread $i \n";
$thread[$i] = new multihread($e);
$thread[$i]->start(PTHREADS_INHERIT_NONE);
}
elseif($thread[$i]->isWorking()===false) {
if($thread[$i]->result===false){
echo "ERROR:Something wrong with thread $i, exit.";
exit;
}
$thread[$i]->shutdown();
$eval=generate_e($i);
if($e==false){
echo "Warning: no more job exiting B"; exit;
}
$thread[$i] = new multihread($e);
$thread[$i]->start(PTHREADS_INHERIT_NONE);
}
}
usleep(100);
}
while(1);
因此,脚本打开新线程,启动此线程,然后用shutdown()关闭线程并在循环中执行。它像魅力一样工作,但在16000+打开\闭合线程后得到了这个错误。似乎有些资源保持锁定状态?如何解决这个问题?