Avant de faire un programme multi-threadé il vous faut vérifier si votre installation de Perl supporte ce type de programmation. En effet, threads n'est pas un module ordinaire du CPAN : il fait partie intégrante de Perl. Dans les faits, il est tellement intégré à Perl que si votre installation n'a pas été compilée avec les bonnes options, il vous faudra re-compiler Perl.
Pour vérifier si Perl a été compilé avec l'option multi-threading utilisez l'option -V :
gulliver [~] perl -V
Summary of my perl5 (revision 5 version 8 subversion 5) configuration:
Platform:
osname=linux, osvers=2.4.24, archname=i686-linux-thread-multi
uname='linux gulliver 2.4.24 #4 sat jan 31 10:29:27 cet 2004 i686 unknown '
config_args=''
hint=recommended, useposix=true, d_sigaction=define
usethreads=define use5005threads=undef useithreads=define
usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
Vérifier le usetreads=define. Sur une version non compilée avec la bonne option, il serait égal à undef.
Sur Linux RedHat ou Mandrake, Perl est pré-compilé avec les bonnes options. Sur d'autres distributions de Linux telles que la Slackware ou la Debian, voire sur les autres Unix lorsque Perl est installé il n'est pas compilé pour supporter le multi-threading et une recompilation s'avére nécessaire.
Il est important de noter que le multi-threading sous Perl n'est relativement stable que depuis la version 5.8.1. Si vous avez une version antérieure de Perl, prévoyer une ré-installation quoi qu'il en soit.
Sur Windows, toutes les versions de Perl supportent le multi-threading de façon native. En effet, l'appel fork() (qui n'existe pas en tant qu'appel système sur cette plateforme) est émulé via le multi-threading.