线程限制为 运行

Limit on threads to run

我正在使用不同的线程和函数 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 之类的东西,因为我正在尝试 运行 那么多线程。

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