Anledningen till att det första programet ibland bara skriver ut 0:or då ingen av trådarna har båda mutexarna samtidigt. Detta kan uppstå då Tråd 1 först hinner få första mutexen m1, men direkt efter det så kör den en sleep vilket gör att den andra tråden, Tråd 2 kan hinna ta den andra mutexen m2. När tråd 1 då sovit klart och fortsätter så kommer det vilja ha den andra mutexen, vilket tråd 2 har och tråd 2 kommer att vilja ha den första mutexen m1 som tråd 1 har, så båda kommer att vänta på varandra vilket gerupphov till deadlock, en cirkulär väntan. Tråd 2 kan självklat också hinna först till sin första mutex m2, men även den sover direkt efter, så tråd 1 kan hinna komma in och ta dens första mutex m1, så då uppstår samma siutation att dem väntyar på varandra.

Anledningen till att det andra programet uppgift 3b, inte upplever samma situation är för att i båda deras arbetsfunktioner så låser dem först deras första mutex, för försts trådan är det m1 och för andra tråden är det m2. Och nästa rad if(pthread_mutex_trylock()) kollar om dem kan låsa nästa lås. T.ex. Om tråd hinner låsa första mutexen m1, och kollar den om den andra mutexen m2, redan är låst eller inte, om den är ledig, så kan den första tråden även låsa m2 och har då båda låsen, men om m2 redan är låst av Tråd 2 så kommer tråd 1 att släppa sitt lås på den först mutexen m1. Alltså kommer inte tråd 1 att håll i sitt lås medans tråd 2 har sitt lås, vilket orsakade deadlock i första uppgiften, 
