multi-thread : peut-on compter dessus ?
Le
Manuel Pégourié-Gonnard
Bonjour,
Est-ce que de nos jours on peut s'attendre à ce que le Perl présent sur
la plupart des Unix supporte le multi-threading (il me semble que c'est
une option de compilation) ?
Si j'ai bien compris, sous Windows, Perl est toujours compilé en version
multi-thread car c'est ce qui sert à émuler fork(). Sous Unix, je n'ai
pas une expérience assez variée pour savoir sur quoi on peut
raisonnablement compter, je fais donc appel à votre expérience.
Merci,
--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Est-ce que de nos jours on peut s'attendre à ce que le Perl présent sur
la plupart des Unix supporte le multi-threading (il me semble que c'est
une option de compilation) ?
Si j'ai bien compris, sous Windows, Perl est toujours compilé en version
multi-thread car c'est ce qui sert à émuler fork(). Sous Unix, je n'ai
pas une expérience assez variée pour savoir sur quoi on peut
raisonnablement compter, je fais donc appel à votre expérience.
Merci,
--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/

Poser une question


autant perl n'était pas packagé threadé par les distribs à l'origine, autant
maintenant c'est plus devenu la norme. il faut dire que du temps des threads
perl 5.005 c'était vraiment buggé et plantait souvent.
maintenant avec les ithreads depuis 5.6.x, mais surtout depuis 5.8.x (bcp de
travail de stabilisation, et suppression des anciens threads), les threads
sont plus répandus... avec aussi des applis qui commencent à les utiliser,
dont padre, l'ide perl écrit en perl.
attention toutefois : un perl threadé sera plus lent, et le core perl n'est
pas entièrement thread-safe (typiquement la fonction sort).
concernant les distribs linux :
mandriva : threadé (je le sais, je suis le mainteneur :-) )
fedora : threadé je crois
ubuntu : threadé
debian : threadé sans doute si ubuntu l'est
unix propriétaires : ils en sont encore à perl 5.6 (voire 5.8 au mieux) et
donc ça m'étonnerait qu'ils soient threadés. je ne suis pas au boulot pour
vérifier hpux, solaris ou aix, donc c'est juste une supposition.
cdlt,
jérôme
--
Non, on ne peut pas. Pas systematiquement.
Il y a des archis sur lesquelles ca n'a pas ete suffisamment testees, voire
sur lesquelles ca ne marche pas tres bien (vax). Du coup, certains Unix
ont toujours un perl mono-threade... comme OpenBSD (histoire d'avoir un
environnement le plus homogene possible).
Ok.
Merci pour ces précisions.
--
Manuel Pégourié-Gonnard Institut de mathématiques de Jussieu
http://weblog.elzevir.fr/ http://people.math.jussieu.fr/~mpg/
Pour completer ma reponse, ce que tu peux par contre supposer, c'est qu'il
existe des packages, comme POE, que tu pourras installer sur ton perl, de
facon a t'isoler de l'implementation precise au niveau du systeme, et donc
de lancer des choses a cote, sans trop te preoccuper de savoir si c'est
des threads ou autre.
(caveat: je n'ai pratiquement pas joue avec POE. Je ne sais pas si c'est
pratique ou penible).
poe est un environnement de programmation événementiel, qui permet en effet
de lancer des choses en parallèle.
cependant, il est important de noter qu'il ne s'agit ni de threads, ni de
multi-processus. à tout moment, il n'y a qu'un et un seul thread. c'est du
multitâche coopératif (à la windows 9x ou macos classique).
par contre, si l'application est bien écrite et évite les pièges classiques
où une sub monopolise l'exécution, on peut simuler du multi-threading
facilement. ça reste une simulation.
introduction à poe : http://merlin.mongueurs.net/talks/intro_poe.pdf
cdlt,
jérôme
--