我使用不同的线程和函数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