【发布时间】:2010-09-14 02:56:09
【问题描述】:
我认为 pthread 使用 clone 在 linux 中生成一个新的 thread。但如果是这样,所有线程都应该有各自的pid。否则,如果它们具有相同的 pid,则 libc 中的全局变量似乎是共享的。但是,当我运行以下程序时,我得到了相同的 pid,但 errno 的地址不同。
extern errno;
void*
f(void *arg)
{
printf("%u,%p\n", getpid(), &errno);
fflush(stdin);
return NULL;
}
int
main(int argc, char **argv)
{
pthread_t tid;
pthread_create(&tid, NULL, f, NULL);
printf("%u,%p\n", getpid(), &errno);
fflush(stdin);
pthread_join(tid, NULL);
return 0;
}
那么,为什么?
【问题讨论】: