Journal
Why Johnny Can’t Write Multithreaded Programs
Je n'aime pas le ton de l'article, et encore moins la phrase "If you used a lock, you probably did something wrong" qui est tout simplement idiote, mais par contre je rejoins l'auteur sur les points suivants :
- utilisez les abstractions fournies par les langages pour gérer la concurrence (pools, queues, workers, etc.).
- utilisez la programmation asynchrone si cela peut éviter d'utiliser des threads.
- efforcez vous de maintenir des threads parfaitement indépendants, qui ne communiquent qu'au travers de queues synchronisées (voir aussi le problème du producteur/consommateur et sa résolution à base de sémaphores http://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem).
- ne créez pas d'états globaux, sauf si cela est absolument nécessaire.
- faîtes appel à des librairies puissantes pour gérer la concurrence simplement (ex : OpenMP).

- utilisez les abstractions fournies par les langages pour gérer la concurrence (pools, queues, workers, etc.).
- utilisez la programmation asynchrone si cela peut éviter d'utiliser des threads.
- efforcez vous de maintenir des threads parfaitement indépendants, qui ne communiquent qu'au travers de queues synchronisées (voir aussi le problème du producteur/consommateur et sa résolution à base de sémaphores http://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem).
- ne créez pas d'états globaux, sauf si cela est absolument nécessaire.
- faîtes appel à des librairies puissantes pour gérer la concurrence simplement (ex : OpenMP).
Ce journal est basé sur Ginger, un gestionnaire de lien minimaliste développé dans le cadre d'un stage de perfectionnement. Pour plus d'informations, consulter le wiki consacré à mes projets personnels.