+ -
当前位置:首页 → 问答吧 → 有关线程退出的问题

有关线程退出的问题

时间:2011-07-01

来源:互联网

#include<pthread.h>
#include <iostream>
using std::endl;
using std::cout;

void printinfo(char *name)
{
  cout<<name<<": "<<(unsigned int)getpid()<<" "<<(unsigned int)pthread_self()<<endl;
}

void *
func(void *arg)
{
  printinfo("new thread");
  return (void *)2;
}

int main()
{
  pthread_t tid;
  pthread_attr_t attr;
  pthread_attr_init(&attr);

  pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);

  int err=pthread_create(&tid, &attr, func, NULL);
  printinfo("main thread");
}

结果却是:
main thread: 18031 3085895376

问题
1、没有new thread的信息,这是为什么?
2、修改main函数,添加sleep(2)后,结果里面有new thread信息,可是发现两者的pid竟然相同,APUE上面说linux用进程实现的线程,而且书上实验也是main、new线程的进程号不同,这点如何解释?

求大牛解释……

作者: liuxialong   发布时间: 2011-07-01

啊啊啊啊啊啊啊啊,棒棒忙,顶一个

作者: liuxialong   发布时间: 2011-07-01