我使用不同的线程和函数enqueueThread将1000 1放入队列中。

for (i = 0; i < num_pthreads; i++)
{
    if ((rc = pthread_create(&threads[i], NULL, enqueueThread, (void*)q)))
    {
        fprintf(stderr, "error: pthread_create, rc: %d\n", rc);
        return EXIT_FAILURE;
    }
}

但是最后它显示了错误:error:pthread_create,rc:11,这显然意味着我没有足够的资源用于线程。我通过ulimit -u进行了检查,它显示为128。这是否意味着我需要将这个数字128增加到10000,因为我试图运行那么多线程。

最佳答案

您可以将setrlimit()系统调用与RLIMIT_NPROC参数一起使用来定义子线程创建限制。有两个限制,硬限制和软限制。软限制只能增加到硬限制,但是您需要 super 用户权限才能更改硬限制。 See man page

10-07 19:10
查看更多