【发布时间】:2015-05-07 19:27:33
【问题描述】:
最近,我在“高级 Linux 编程”一书(http://www.advancedlinuxprogramming.com/alp-folder/alp-ch04-threads.pdf,第 4.5 章)中读到,在 GNU/Linux 上,POSIX 线程被实现为进程,并且有某种“管理器线程”可以做一些事情控制工作。
当我运行本书中的以下示例时:
#include <stdio.h>
#include <pthread.h>
void* thread_func(void *arg)
{
fprintf(stderr, "thread: %d\n", (int)getpid());
while(1);
return NULL;
}
int main()
{
fprintf(stderr, "main: %d\n", (int)getpid());
pthread_t thread;
pthread_create(&thread, NULL, thread_func, NULL);
while(1);
return 0;
}
我收到的主线程和子线程的 PID 相同,而书上说它可以不同,还有另一个 PID,对应于所谓的“管理器线程”。我试图找到有关此“经理线程”的一些信息,但事实证明这很困难。
UPD。我对我的程序的行为没有任何疑问,但是对于行为有一些困惑,书中解释了 - 特别是在哪些情况下它可能是正确的?
【问题讨论】:
-
克隆系统调用手册页可以帮助linux.die.net/man/2/clone
-
对于有关技术的书籍,始终知道该书的出版时间,在本例中为“2001 年 6 月第一版”。声明已经过时了。