Powrót do spisu treści procesów

Spis treści


Opis biblioteki LinuxThreads

Autorem tej biblioteki jest Xavier Leroy. Dokumentację ściągnąć można z http://pauillac.infria.fr/xleroy/linuxthreads/, a źródła z ftp://ftp.inria.fr/INRIA/Projects/cristal/Xavier.Leroy/linuxthreads.tar.gz.

Biblioteka ta jest zgodna ze standardem POSIX 1003.1c, chociaż nie do końca implementuje zawarte w tym standardzie ustalenia:

Inna cechą charakterystyczną tej biblioteki jest wykorzystywanie sygnałów SIGUSR1 i SIGUSR2. Powoduje to niemożliwość ich używania przez programistę, a także może być przyczyną dosyć niejasnych konfliktów z innymi bibliotekami jądra (np. Xlib czy SVGAlib).

Biblioteka posiada własne wersje niektórych funkcji z libc5, które nie były "bezpieczne" dla wątków (m.in. printf!!!), gdyż albo nie miały wielowejściowości (blokowanie się na operacjach wejścia/wyjścia) albo miały problem ze zmienną errno.

Powrót do spisu treści


Zasada działania LinuxThreads

Działanie biblioteki Linuxthreads oparte jest na systemie klient-serwer: klient zglasza zapotrzebowanie na utworzenie, zakończenie lub usunięcie wątku do specjalnego wątku-zarządcy, a on wykonuje całą "czarną robotę".

Tak więc każdy proces, który tworzy N wątków, tworzy na prawdę N+2 procesy: jeden wątek główny, od którego poprzez funkcję clone() powstają pozostałe wątki, jeden wątek-zarządca i N właściwych wątków. Ponieważ jednak wątek-zarządca włącza się bardzo rzadko, więc efektywność tego rozwiązania niewiele na tym traci.

Powrót do spisu treści


Algorytmy

Powrót do spisu treści

Bibliografia

  1. Threads-FAQ
  2. Projekt Linux - paragraf Wątki
Powrót do spisu treści
Autorzy: K. Gołąb, P. Tatarczak