Perl:线程创建失败:pthread_create返回11

时间:2015-08-10 23:46:49

标签: multithreading perl

我的代码如下:

$('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();
}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

pthread_create返回EAGAIN时,表示

  

没有足够的资源来创建另一个线程,或遇到系统强加的线程数限制。后一种情况可能以两种方式发生:RLIMIT_NPROC软资源限制(通过setrlimit(2)设置),它限制了真实用户ID的进程数量;或者达到了内核对线程数的限制,/ proc / sys / kernel / threads-max。

好吧,至少在我的系统上。