Une autre solution pour éviter de devoir choisir entre reprise préemptive et reprise par élimination, donc pour éviter les interblocages, consiste à faire en sorte qu'une des quatre conditions de l'interblocage soit toujours fausse.
Le problème vient de l'existence de ressources non partageables accessibles uniquement en mode exclusif. Une technique permet de transformer une ressource non partageable en une ressource partageable : le spool géré par un démon.
Intuitivement un spool est une zone mémoire (un buffer) qui met en attente (non bloquante) des requêtes, qui seront traitées lorsque la ressource sera disponible. C'est la technique utilisée pour les impressions.
En théorie, ce n'est pas une solution, car le buffer est une nouvelle ressource non partageable : c'est le problème du producteur/Consommateur avec un buffer limité.
En pratique, cette solution retarde le problème de l'interblocage, qui survient lorsque le buffer est plein. Il suffit donc d'avoir un buffer suffisamment grand.
Une solution consiste à demander qu'un processus demande au début toutes les ressources dont il a besoin. Ainsi, il n'aura pas à faire de nouvelle requêtes. Deux défauts : d'une part le processus garde les ressources beaucoup plus de temps que nécessaire; d'autre part la famine est possible.
Une autre solution consiste à libérer toutes les ressources avant d'effectuer une nouvelle requête, même si celle-ci concerne des ressources identiques. Le processus grade moins longtemps les ressources, mais encore deux défauts majeurs : d'une part la famine demeure toujours possible; d'autre part entre deux possessions d'une même ressource, celle-ci a pu être modifiée par un tiers.
Le problème vient des ressources déjà allouées et qui ne peuvent être réquisitionnées. Une solution consiste à déclarer les ressources détenues par un processus en attente de ressources comme réquisitionnables. Lors d'une requête d'un autre processus, elles seront réquisitionnées si elles lui permettent de ne pas attendre. Cette solution possède deux défauts : d'une part la famine est possible, d'autre part, il faut pouvoir sauvegarder puis restaurer la ressource car elle a pu être modifiée par un tiers.
Le problème vient du fait que les processus peuvent requérir les ressources dans n'importe quel ordre. Une solution consiste donc à ordonner les ressources (un numéro unique par type de ressource) et d'obliger les processus à demander les ressources en respectant cet ordre. Cette solution ne provoque pas de famine.
Deux défauts : d'une part le processus garde les ressources beaucoup plus de temps que nécessaire; d'autre part elle n'est pas facile à faire respecter par les utilisateurs, ni facile à intégrer dans les compilateurs.