-----------------------------------------------------------------------------------------------
Angående trådarna i uppg3a.c

Eftersom de båda trådarna som innehar mutex, först låser varandras andra mutex
uppstår en deadlock. Om någon av de två trådarna hinner fram (till mutex nr 2) innan den andra 
tråden hinner låsa sin första mutex, så lyckas det varvet köra.

här ifrån "man pthread_mutex_lock"
 
"The  mutex  object referenced by mutex shall be locked by calling pthread_mutex_lock(). 
If the mutex is already locked, the calling thread shall block until the mutex becomes available."

Detta innebär att trådarna låses  och förblir låsta om nästa mutex inte är tillgänglig.

Man kan för att minska risken för deadlocks sätta swappa m1 och m2 på ena tråden. 
Då försöker trådarna låsa samma lås först och på det sättet undvika deadlock.


-----------------------------------------------------------------------------------------------
Angående trådarna i uppg3b.c

Detta från "man pthread_mutex_trylock"

"The pthread_mutex_trylock() function shall be equivalent to  pthread_mutex_lock(),  except
that if the mutex object referenced by mutex is currently locked (by any thread, including
the  current  thread),  the  call  shall  return  immediately.

Så om tråd ett (t1) låser första låset m1 och sedan försöker sig på att låsa det andra
låset m2 med pthread_mutex_trylock så testar den om någon annan har låst den,och om detta 
är fallet så faller tråden ner och låser upp sin första mutex. Däremed kan tråden som har låst
m2 säkert låsa m1 och utföra det den ska utföra.

Detta gör att trådarna aldrig kommer in i en DEADLOCK.




	
