10.2 Thread-Bibliotheken
Zwar werden im Buch hier nur die Linux-Threads behandelt, dennoch sollten hier weitere Bibliotheken nicht unerwähnt bleiben. Mitte der 90er-Jahre hat die Entwicklung von zahlreichen Thread-Bibliotheken begonnen, wobei sich letztendlich die Bibliothek von Xavier Leroy im Jahre 1997 unter dem Namen Pthread-Lib durchgesetzt hat. Diese Bibliothek wurde von Ulrich Drepper in Glibc2 an die Standardbibliothek angebunden und ist somit auf jedem Linux-System vorhanden. Nachdem Linux jetzt endlich für Mehrprozessorsysteme interessant wurde, wurden die Klagen über die Linux-Thread-Bibliothek lauter. Da es immer wieder Probleme mit Signalen, der hierarchischen Beziehung zwischen Threads, der immer noch nicht ganz implementierten POSIX-Konformität und noch andere Sorgen gab, war man auf der Suche nach neuen Thread-Bibliotheken.
|
Einen interessanten Ansatz bietet die von Ralf S. Engelschall begonnene Bibliothek GNU Pth, die bereits seit 1999 als offizielles GNU-Projekt gestartet wurde. Das »Gute« an dieser Bibliothek ist, dass sie sich als eine möglichst portable Bibliothek für nicht präemptives Multitasking eignet. |
|
Programmierer von Intel und IBM habe GNU Pth anschließend als Einstiegspunkt verwendet, um daraus die Next Generation Posix Thread (NGPT) zu entwickeln, die vor allem die Skalierung auf Mehrprozessorsysteme erhöhen sollte. |
|
Als Dritte im Bunde kann man die Bibliothek von Red Hat mit Native Posix Thread Library hervorheben, die gar eine Veränderung des Kernels nötig machte. Dabei wurden u. a. neue Systemaufrufe, ein erweiterter clone()-Aufruf und vor allem ein funktionierendes Signalhandling eingebaut. |
Es sind zwar noch weitere Bibliotheken zu den Threads in der Entwicklung, aber diese hier scheinen mir am interessantesten. Da einige dieser Thread-Bibliotheken noch recht neu sind und da es immer noch ein wenig an Dokumentation dazu fehlt, macht es relativ wenig Sinn, Ihnen diese hier zu demonstrieren. Daher soll hier auf die altbewährte Linux-Thread-Bibliothek zurückgegriffen werden.
|