uppg3a
Det blir ofta massa nollor eftersom att deadlock uppstår. Det eftersom att det blir en cirkulär väntan då tråd 1 tar mutex 1 och sedan sover en sekund. När den vaknar har ofta tråd 2 hunnit ta mutex 2 och då uppstår den cirkulära väntan. Tråd 1 väntar på mutex 2 som tråd 2 har, men som väntar på mutex 1 som tråd 1 har. Ett förlsag på lösning är alltså att ta låsen i samma ordning i båda trådarna och därmed bryta den cirkulära väntan.

uppg3b
Det blir alltid ettor och tvåor eftersom att mutex inte låses på ett korrekt sätt. pthread_mutex_trylock() returnerar enlgit manualsidorna 0 om låsningen skedde, annars ett "error number"(d.v.s inte noll). Nu körs innehållet i if-satsen när pthread_mutex_trylock() när 0 INTE returneras. Det är alltså eftersom if-satsen där trylock görs som är felaktig. Skulle den ändras till if(!(pthread_mutex_unlock(&m))) så kommer den att utföras, alltså när 0 returneras.
