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
mon_script.pl
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 routeur1 routeur2 routeur3 ...
Ca c'est ce qui marche, et ca fonctionne sequenciellement (et ca prend du temps)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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
Partager