Mark Mitchell, Jeffrey Oldham ve Alex Samuel'in Gelişmiş Linux Programcılığı kitabını okuyorum . 2001'den beri, biraz eski. Ama ben zaten onu oldukça iyi buluyorum.
Ancak Linux'un kabuk çıktısında ürettiğinden farklılaştığı bir noktaya geldim. 92. sayfada (izleyicide 116), 4.5 GNU / Linux Thread Uygulaması bölümü bu cümleyi içeren paragrafla başlamaktadır:
GNIX / Linux'ta POSIX konularının uygulanması, UNIX benzeri diğer birçok sistemde konu uygulamasından önemli ölçüde farklıdır: GNU / Linux'ta, thread'ler süreç olarak uygulanır.
Bu kilit nokta gibi görünüyor ve daha sonra bir C kodu ile gösteriliyor. Kitaptaki çıktı:
main thread pid is 14608
child thread pid is 14610
Ve benim Ubuntu 16.04'ümde:
main thread pid is 3615
child thread pid is 3615
ps
çıktı bunu destekler.
Sanırım 2001 ile şimdi arasında bir şey değişmiş olmalı.
Bir sonraki sayfadaki bir sonraki alt bölüm, 4.5.1 Sinyal İşleme, önceki ifadeye dayanmaktadır:
Sinyaller ve iplikler arasındaki etkileşimin davranışı bir UNIX benzeri sistemden diğerine değişmektedir. GNU / Linux'ta, davranış, iş parçacıklarının süreçler halinde uygulanması gerçeğiyle belirlenir.
Ve daha sonra kitapta bunun daha da önemli olacağı görülüyor. Biri burada neler olduğunu açıklayabilir mi?
Bunu gördüm Gördüm Linux çekirdeği konuları gerçekten çekirdek işlemleri? , ama pek yardımcı olmuyor. Kafam karıştı.
Bu C kodudur:
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
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;
}
getpid
bir iş parçacığı grubu kimliği olarak adlandırılacak olanı ve kullanmanız gereken bir işlem için benzersiz bir kimlik elde etmek için döndürür gettid
. Ancak, çekirdek dışındaki çoğu kişi ve araç, bir iş parçacığı grubuna bir işlem diyecek ve diğer sistemlerle tutarlılık için bir işlem iş parçacığı arayacak.