linux创建线程失败errno=11

问          题 :为什么一个进程调用pthread_create来创建线程,当251次就失败了,失败errno11 :    Resource temporarily unavailable

原       因:一个进程最多拥有250个线程资源,由于pthread_create创建的线程结束后,没有回收该线程的资源

解决方案:调用pthread_join来释放结束的线程资源

测试代码:

#include
#include

int aa = 0;
void *thread_fun(void *fun)
{
printf("thread_fun aa=%d\n",aa++);
}

int main()
{
    int i=0;
    int ret = -1;
    pthread_t pid;
    if(pthread_rwlock_init(&playRwLock,NULL) != 0)
    {
        printf("create rwlock error\r");
        return 0;
    }
    for(i=0;i<500;i++)
    {
printf("i=%d ",i);
ret = pthread_create(&pid,NULL,thread_fun,NULL);
if(ret != 0)
{
          printf("thread_create error ret=%d\n",ret);
}
usleep(50*1000);
pthread_join(pid,NULL);    //添加此行就解决此问题
}


return 0;
}

你可能感兴趣的:(Linux)