
多线程问题(关于pthread_join()的使用)
环境: ubuntu6.06 + gc.0.3
我要编写一个如下所示的基于多线程的程序代码(请注意注释):
#include
#include
#include

void * pthr(void * str)
{
printf(“第一%d \ n”,(int)str);
sleep(3);
printf(“再次%d \ n”,(int)str);
返回NULL;

}
int main()
{
pthread_t pth;
int i;
for(i = 0; i <500; ++ i)

{
pthread_create(&pth,NULL,pthrc同时启动多个pthread,(void *)(i));
pthread_join(pth,NULL); //这里!!!
}
sleep(10);
返回0;

}
可以执行此代码,但是由于短语“ pthread_join(pth,NULL); //这里!!!”,它不是真正的多线程,因为它总是创建一个线程并等待它结束并重复(这是我的个人理解),但这不是我想要的(我希望多个线程一起执行). 因此,我删除了“ pthread_join”行(在我看来,当线程结束时,它应该自动释放资源),但是实际的运行时程序仅创建了382个线程并结束了.
我的问题是:
1. 创建线程是否有上限?如果没有c同时启动多个pthread,为什么该程序只创建382个线程并结束.
2. 线程结束时将释放所有资源(不调用pthread_join).
3. 如果我同时运行多个线程,该如何管理(我想不到这个示例,创建一个示例,等待结束,然后创建下一个示例)
------解决方案--------------------
如果您需要分割线程序,则无需加入.
如果不是,则与您的示例一样好. 设置状态
使用一个线程作为回收线程,如果有线程程序处于死状态,则加入该线程
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-257273-1.html
加工过程就算有虫卵也会烤熟了