[langage] threads en Perl
Bonjour,
J'aimerais un peu d'aide sur les threads. Mon script se connecte sur des routeurs et lance des actions. La liste de routeurs est dans un fichier.
liste_routeurs.txt
Code:
1 2 3 4
| routeur1
routeur2
routeur3
... |
mon_script.pl
Code:
1 2 3 4 5 6
| open (FILE, "liste_routeurs.txt") or die "blabla";
while (<FILE>)
{
$routeur = $_; faire_les_choses_sur_routeur($routeur);
}
close FILE; |
Ca c'est ce qui marche, et ca fonctionne sequenciellement (et ca prend du temps)
En utilisant plusieurs threads je pourrais reduire le temps d'execution du script de maniere drastique, par contre je ne vois pas du tout comment faire.
Par exemple avec 3 threads:
routeur1 ----> le thread1 s'en charge
routeur2 ----> le thread2 s'en charge
routeur3 ----> le thread3 s'en charge
...
Chaque thread doit lire dans liste_routeurs.txt la ligne suivante qu'un autre thread a lu.
Une maniere peu elegante a mon gout serait d'utiliser Xmod3 avec X le numero de la ligne pour que :
- le thread1 s'occupe des routeurs 1,4,7,10,...
- le thread2 s'occupe des routeurs 2,5,8,11,...
- le thread3 s'occupe des routeurs 3,6,9,12,...
Donc je voudrais savoir comment puis-je faire pour que chaque thread lance la fonction faire_les_choses_sur_routeur($routeur) puis passe au routeur qui suit dans la liste mais qui n'a pas encore été géré par un autre thread.
Ce que je veux dire est dur a expliquer mais simple a comprendre, si je n'ai pas ete assez precis dites le moi.
Merci