如何使用pthread_exit()重用线程
我的电脑每个进程允许380个线程,这对我来说很好。 当我调用380次函数sdfpthread_create()时,我没有问题。 但是连续调用返回错误11(资源暂时不可用)。
明显的解决方案是使用pthread_exit(),但我没有解决问题,限制仍然是380个线程创建。
我如何重用线程?
#include #include #include #include #include void *doSomeThing() { sleep(99); pthread_exit(NULL); } int main(void) { pthread_t tid; int i; int err; /* Create threads */ for (i=0; i<380; ++i) { err = pthread_create(&tid, NULL, doSomeThing, NULL); if (err != 0) printf("\n1) Can't create thread :[%s]", strerror(err)); } sleep(1); /* Reuse threads */ for (i=0; i<5; ++i) { err = pthread_create(&tid, NULL, doSomeThing, NULL); if (err != 0) printf("\n2) Can't create thread :[%s]", strerror(err)); } exit(0); }
您需要调用pthread_join(3)
来实际清理线程退出状态,或者创建不可连接的线程。
Edi 0:
请参阅:
-
pthread_create(3)
-
pthread_detach(3)
-
pthread_attr_setdetachstate(3)