首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

多线程有关问题(关于pthread_join()用法)

2012-02-06 
多线程问题(关于pthread_join()用法)环境:ubuntu6.06+gcc4.0.3我想要写一个基于多线程的程序代码如下(请注

多线程问题(关于pthread_join()用法)
环境:ubuntu6.06+gcc4.0.3
我想要写一个基于多线程的程序代码如下(请注意加注释的地方):
#include   <pthread.h>
#include   <unistd.h>
#include   <stdio.h>
void   *pthr(void   *str)
{
printf( "frist   %d\n ",   (int)str);
sleep(3);
printf( "again   %d\n ",   (int)str);
return   NULL;
}
int   main()
{
pthread_t   pth;
int   i;
for   (i   =   0;   i   <   500;   ++i)
{
pthread_create(&pth,   NULL,   pthr,   (void   *)(i));
pthread_join(pth,   NULL);//这里!!!
}
sleep(10);
return   0;
}
这个代码可以执行,但是因为“pthread_join(pth,   NULL);//这里!!!”这句的存在,它并不是一个真正意义上的多线程,因为它总是创建一个线程然后等待它结束,再重复(这是我个人的理解),但这不是我想要的情况(我想要的是多个线程一同执行)。于是我把“pthread_join”这条去掉(在我想,当线程结束时,它应该自动释放资源)可是实际运行时程序只创建了382条线程就结束了。
我的问题是:
1.线程的创建有上限吗,如果没有,这个程序为什么会只创建了382个线程就结束了。
2.当线程结束时(不调用pthread_join)会不会将所有资源释放。
3.如果我同时运行多个线程,如何管理它,(我不想象本例子这样,创建   一个,等待结束,再创建下一个)

[解决办法]
如果你需要的是分离线程序,就没必要join了.
如果不是,那么就按你例子上那样就不错.设置一个状态,
用一个线程做回收线程,有处于死亡状态的线程序就join

热点排行