Un interblocage n'est pas un accident : c'est la conjonction de quatre propriétés, et chacune peut se refuser à la conception.
Les conditions de Coffman
- Exclusion mutuelle : au moins une ressource ne peut être détenue que par un seul thread.
- Détention et attente : un thread détient une ressource et en demande une autre.
- Pas de préemption : une ressource ne peut être retirée de force à celui qui la détient.
- Attente circulaire : il existe un cycle de threads attendant chacun le suivant.
Objectif
Compter les conditions nécessaires, puis celles qu'il suffit de briser. Nommer ensuite celle que visent deux stratégies courantes.
Répondre aux deux dernières questions par le nom de la condition, en deux mots.
Rappels
Imposer que toutes les ressources soient acquises dans un ordre global fixe rend un cycle impossible : le thread qui détient la ressource de plus petit rang ne peut attendre que des rangs supérieurs.