Понимание нитей

Я наткнулся на концепцию вРасширенное программирование в Linux, Вотссылка: Ссылаться на4.5 Внедрение GNU / Linux Thread.I '

Я ясно с понятием, что автор говоритс, но яЯ путаюсь с программой, которую он объяснил для печати processID 'с тем.

Вот код

#include 
#include 
#include 
void* thread_function (void* arg)
{
    fprintf (stderr, "child thread pid is %d\n", (int) getpid ());
    /* Spin forever. */
    while (1);
    return NULL; 
}

int main ()
{
    pthread_t thread;
    fprintf (stderr, "main thread pid is %d\n", (int) getpid ());
    pthread_create (&thread, NULL, &thread_function, NULL);
    /* Spin forever. */
    while (1);
    return 0;
} 

Выход для вышеуказанного кода в соответствии с автором

% cc thread-pid.c -o thread-pid -lpthread
% ./thread-pid &
[1] 14608
main thread pid is 14608
child thread pid is 14610 

Вывод, который я получаю при компиляции

[1] 3106
main thread pid is 3106
child thread pid is 3106

Я понимаю, что для создания потока, Linux внутренне вызываетклон(в большинстве случаев), так же, каквилка Системный вызов делает, чтобы создать процесс. Единственное отличие состоит в том, что поток, созданный в процессе, использует одно и то же адресное пространство процесса, а процесс, созданный родительским процессом, копирует адресное пространство родительского процесса. Итак, я думаю, что печать идентификатора процесса в потоках приводит к тому же идентификатору процесса. но это не тот же самый результат в книге.

Пожалуйста, скажите мне, о чем он говорит? Ответ неверен в книге / моей ..?

Ответы на вопрос(4)

Ваш ответ на вопрос