私のコンピューターでは、プロセスごとに 380 のスレッドが許可されていますが、これは私にとっては問題ありません。関数 sdfpthread_create() を 380 回呼び出しても問題ありません。ただし、連続して呼び出すと、エラー 11 (リソースが一時的に利用できません) が返されます。
明らかな解決策は pthread_exit () を使用することですが、私は問題を解決しませんでした。作成されるスレッドの制限は依然として 380 です。
スレッドを再利用するにはどうすればよいですか?
#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
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);
}