主题:关于线程的问题
使用fork(),子进程建立后,有父子2个进程,子进程退出后,就只有父进程在。改用线程编程,发现这样的问题,如何去掉这个不必要的线程/进程?
线程编程,代码如下。建立线程后,从进程列表ps里发现同时有3个进程ID存在。在线程tttt退出后,还剩下2个进程ID,运行了pthread_cancel(id);pthread_join(id,NULL);还是有2个进程ID。
void *tttt(void *)
{
int i;
i=0;
while (_gtest && i <5)
{
printf( "11111.%d..%d. %d\n",a1, i,getpid());
usleep(2000000);
i++;
}
return NULL;
}
int main(void)
{
int i,ret;
int a2=10;
a1=10;
ret=pthread_create(&id,NULL,tttt ,NULL);
i=0;
while (i<10){
printf("Main .%d..%d. %d\n",a1, i,getpid());
usleep(1000000);
i++;
}
pthread_cancel(id);
pthread_join(id,NULL);
usleep(10000000);
return (0);
}
线程编程,代码如下。建立线程后,从进程列表ps里发现同时有3个进程ID存在。在线程tttt退出后,还剩下2个进程ID,运行了pthread_cancel(id);pthread_join(id,NULL);还是有2个进程ID。
void *tttt(void *)
{
int i;
i=0;
while (_gtest && i <5)
{
printf( "11111.%d..%d. %d\n",a1, i,getpid());
usleep(2000000);
i++;
}
return NULL;
}
int main(void)
{
int i,ret;
int a2=10;
a1=10;
ret=pthread_create(&id,NULL,tttt ,NULL);
i=0;
while (i<10){
printf("Main .%d..%d. %d\n",a1, i,getpid());
usleep(1000000);
i++;
}
pthread_cancel(id);
pthread_join(id,NULL);
usleep(10000000);
return (0);
}