Programmation multithread sous bash (et autre shell), Sema4shell

englishThere is also an english version of this article

Voyant le temps que prenait la décompression de certaines archives au format lpaq (excellent compresseur) sur une machine à base de CPU 4 cœurs et ayant moi même une machine à base d’Atom330 (CPU 4 cœurs 64bits très basse consommation), je me suis dit qu’il serait plus intéressant d’utiliser les 4 cpu en parallèle. A ma grande stupéfaction, il n’y a pas d’outil de gestion de sémaphore sous Bash ou plus généralement en shell…

Me rappelant des plaisirs de la programmation multithread sous BeOS en 1996 (ça nous rajeunit pas), sur la BeBox, premier ordinateur personnel biprocesseur. Je me suis dit que cela ne devait pas être très compliquer de faire des outils à partir de l’API POSIX.

J’ai donc fait plusieurs outils en c qui sont des ‘bindings’ de la partie la plus indispensable de l’API des sémaphores POSIX, et seulement les sémaphores nommées (Linux-2.6 minimum), afin de les utiliser à volonté en Bash. Cela fait très longtemps que je n’ai pas développé en langage c comme vous pourrez le remarquer au code source, il s’agit juste d’un premier jet qui fonctionne basiquement, sans trop de tests, avec des lignes pourries commentées.

Vous pouvez le télécharger sem4shell (sema(phore/ for) shell) ici. (mise à jour en 0.3, le 17 mars 2009)

Je vous conseille de lire le README inclus, l’exemple fourni sample.sh et/ou

man page sem_overview (traduit ici en français).

Leave a comment

You must be