Voici un petit tuto sur le multi-threads.
Pourquoi faire du multi-threads, si vous développez une application qui doit faire des traitements de données (images / vidéo / recherche web / etc...), et que vous réalisez des boucles standards votre programme va se figer car une boucle est bloquante.
Une solution est la création de threads, qui sont des processus autonomes et peuvent tourner en parallèle avec le code de votre logiciel un peux comme si vous lanciez d'autres exécutables mais en conservant l'accès a vos variables globales ou aux données passées en paramètre par pointeur .
Par contre il existe quelques soucis qu'il faut prendre en compte.
C'est l'os qui va se charger de lancer les threads et pas forcément dans l'ordre de leurs création. Donc il faut pouvoir synchroniser les threads, mais sans prendre en compte l'ordre de leurs création.
Pour cela il existent deux outils très utiles
- Les sémaphores
- Les mutex
2 méthodes sont possibles
- wait , qui décrémente le sémaphore et endort le thread dans cas ou la valeur du sémaphore est inférieur à 0
- signal, qui incrémente le sémaphore et réveille un thread endormi.
Allen B. Downey un professeur d'université Américain à écrit un petit livre à ce sujet "The Little Book of Semaphores", proposant des "paterns" pour des cas d'école bien connu.
The Little Book of Semaphores
Dans ce tutoriel évolutif, je vous propose quelques exemples de ce livre écrit en PureBasic évidement.
Table des exemples :
- Le rendez-vous
- Le mutex
- Les coureurs (partie 1)
- Les coureurs (partie 2)
- Les coureurs (partie 3)
- le producteur et le consommateur (Module)
- Le producteur consommateur (Exemple)
- A suivre (l'écrivain et le lecteur)