Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
thread_ordre [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


thread_ordre

Warning: Undefined array key 6 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1453

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
thread_ordre [2008/05/06 08:03]
tyrtamos créée
thread_ordre [2008/05/06 08:23]
tyrtamos
Ligne 3: Ligne 3:
 ===== Problématique ===== ===== Problématique =====
  
 +A priori, quand on lance des threads, on s'attend à ce qu'ils agissent sans qu'on puisse déterminer dans quel ordre ils vont le faire.
 +
 +Dans certains cas, nous voulons au contraire qu'ils agissent dans un ordre bien déterminé.
 +
 +Voilà un exemple de solution possible.
  
 ===== Solution avec un verrou (threading.Lock()) ===== ===== Solution avec un verrou (threading.Lock()) =====
  
 +Le principe est simple:
 +
 +  * on créé une variable globale "statut" initialisé à 1, et chaque thread pourra la lire et la modifier
 +
 +  * on créé le verrou "vstatut" (threading.Lock()) qui ne permettra l'accès à la variable "statut" par les threads qu'un à la fois.
 +
 +  * chaque thread attend, en lisant "statut", que ce soit à son tour d'agir, et change "statut" à la fin pour que le suivant puisse agir à son tour.
 +
 +Pour l'exemple:
 +
 +  * j'ai créé 10 threads, et leur action consiste simplement à imprimer leur nom de thread sur la console.
 +
 +  * pour que chacun imprime à son tour, j'ai ajouté un verrou vprint
 +
 +  * les threads ne s'arrêtent que lorsque le programme principal leur demande
 +
 +On voit bien dans l'impression de sortie que chaque thread agit bien à son tour, dans l'ordre des valeurs successives de "statut".
  
 +\\
 <code python> <code python>
 #!/usr/bin/python #!/usr/bin/python
thread_ordre.txt · Dernière modification: 2008/05/08 20:25 de tyrtamos