GNU/Hurd : la librairie pthread

Le problème actuel

A l'heure actuelle (courant mai 2002), il n'existe pas d'implémentation des threads selon la norme POSIX (pthread) sous GNU/Hurd. Il existe bien des threads sous GNU/Hurd qui sont appelés couramment le cthread, ce qui est différent des pthreads. Ceci ne rend pas impossible l'existance de pthread sous GNU/hurd, juste qu'il y a encore du boulot à faire.

Pourquoi les pthreads ?

Pourquoi est-il important d'avoir les pthreads sous GNU/Hurd ?

Premièrement, pour répondre au standard POSIX qui est un critère très important actuellement pour qu'un système soit adopté.

Il est vrai que l'on a rarement besoin de la totalité d'un standard, la majorité des UNIX fonctionnent très bien sans avoir implémenté la totalité du standard POSIX.

Cependant les threads POSIX sont une fonctionnalité très utilisée surtout par les logiciels disposant d'une IHM complexe comme KDE.

Donc les pthreads sont bien utiles et il reste à espérer qu'ils seront bientôt portés sous GNU/Hurd.

L'état de l'art

Pour avoir un premier point de vu de l'état de l'art du portage des pthreads sous GNU/Hurd, on peut consulter la liste de liens d'Ognyan Kulev. Dans cette liste il recommance la lecture des liens suivants :

Ensuite, on peut regarder le message de D. Hilton annonçant qu'il a réussi à porter libpth sous GNU/Hurd, ce qui devrait offrir une libpthread correct. Plus d'information sur son site.

Sur le site assez récent TWiki, à la page de développeurs, on peut lire :

Mais je n'ai pas encore eu le temps de voir plus loin ...

Mon expérience personnelle

Pour l'instant j'ai essayé le travail de D. Hilton qui consiste à l'adaptation de la libpth (Portable Thread). Sur sa page, il propose de télécharger la libpth (en faite un lien sur http://www.gnu.org/software/pth/ ) et un patch qui s'applique sans problème.

La compilation et l'installation s'effectue sans problème.

Ensuite j'ai essayé de compiler QT-3.0.2 en activant les threads. J'ai du un peu bidouiller les fichiers, car nativement QT prétend (pas tout à fait à tord) qu'il n'est pas possible d'avoir les threads sous GNU/Hurd, et il reste quelques PATH_MAX à quelques endroits.

Neanmoins on arrive au bout de la compilation de QT, les exemples marches bien.

La suite des tests à consister à compiler KDE-3. Arrivé ici, j'ai eu de gros soucis car KDE a besoin des fonctions sémaphores (sem_init, sem_destroy, sem_wait, sem_trywait, sem_post et sem_getvalue). Sans être expert sur la question, cette implémentation des sémaphores est fortement liée à celle des threads. Sous Linux, elle est distribuée en fichiers séparé de la glib, mais elle est très fortement liée.

Il ne me reste plus qu'a essayer les autres libpthreads disponibles ... ou encore mieux terminer le travail :)

retour


Emmanuel DUMAS, emmanuel point dumas arobase free point france
Last modified: Mon May 27 13:51:13 CEST 2002