我的代码如下:
$('li').click(function() { $("ul ul:visible").hide(); });
根据我的理解,我一次不创建超过4个线程。但是,运行此脚本一段时间后,我得到:
my $tcount :shared = 0;
while( $message = $msgQueue->poll()){
if($tcount < 4){
Logger::log(3, "Number of active threads : ".$tcount." processing incomming message");
threads->create(processData,$message,createMsgId());
} else {
Logger::log(2, "Maximum number of threads reached. Waiting");
sleep 1 until $tcount < 4);
threads->create(processData,$message,createMsgId());
}
}
sub processData {
$tcount++;
# do something
$tcount--;
threads->exit();
}
我做错了什么?
答案 0 :(得分:0)
当pthread_create
返回EAGAIN
时,表示
没有足够的资源来创建另一个线程,或遇到系统强加的线程数限制。后一种情况可能以两种方式发生:RLIMIT_NPROC软资源限制(通过setrlimit(2)设置),它限制了真实用户ID的进程数量;或者达到了内核对线程数的限制,/ proc / sys / kernel / threads-max。
好吧,至少在我的系统上。