pthread_create和EAGAIN

kam*_*iro 5 posix memory-leaks pthreads

当我尝试使用pthread_create生成一个线程时,我得到了一个EAGAIN.但是,根据我的检查,线程似乎已被正确终止.

在尝试使用pthread_create创建线程时,是什么决定了操作系统给EAGAIN?未封闭的套接字/文件句柄是否可能在导致此EAGAIN(即它们共享相同的资源空间)中起作用?

最后,是否有任何工具可以检查资源使用情况,还是可以用来查看当时有多少pthread对象处于活动状态的任何函数?

kam*_*iro 9

好的,找到了答案.即使调用pthread_exit或pthread_cancel,父进程仍需要调用pthread_join来释放pthread ID,然后该ID将变为可循环使用.

最后放入pthread_join(tid,NULL)就可以了.

编辑(不是waitpid,而是pthread_join)

  • 如果你对等待线程不感兴趣,那么就释放资源而言,`pthread_detach()`应该做同样的事情. (7认同)