Nous poursuivons ce mois-ci les raisons pour passer à la programmation parallèle et surtout les pièges à éviter et à maîtriser. Et ils sont nombreux !
Parfois nommé étreinte fatale, le deadlock est provoqué par des threads mutuellement verrouillés. Cette situation peut être comparée à deux personnes dessinant des diagrammes tout en se partageant un crayon et une règle. Si une personne prend le crayon et l'autre prend la règle, un blocage se produit lorsque la personne avec le crayon a besoin de la règle pour terminer son travail alors que la personne avec la règle a besoin du crayon pour terminer son travail à son tour. Les deux demandes ne peuvent être satisfaites, un blocage se produit. Pour de nombreux développeurs l'ouvrage sur les Design Patterns du fameux Gang of Four est sans aucun doute un ouvrage de référence pour tous les développeurs. Avezvous déjà tenté de passer en parallèle un des patterns du GoF ? Par exemple l'Observer. Lors d'une présentation chez Microsoft Research, Edward A. Lee, chercheur et professeur en informatique à l'université UC Berkeley, a montré que l'utilisation de mutex peut rapidement aboutir à des étreintes fatales potentielles. Voici le fragment Java illustrant ce problème.
Bruno Boucard