[Asterisk-Dev] MUTEX definition

TC trclark at shaw.ca
Wed Dec 15 10:20:45 MST 2004


Dam that was good, I just read it to my 9 year old son & he gets it :)
> Mutex mean mutual exclusion.
> 
> It is a point in the code where access to Resources ( memory, code, or
> data structures ) are given exclusive access. On a limited number of
> threads can access that point in the code or the memory protected by the
> code.
> 
> Example.
> 
> You and your wife own one car and only one key for your car, but each of
> you wants to drive the car.
> 
> The car key is the MUTEX. In order to drive the car you must have the
> key.
> 
> A MUTEX makes the code/thread wait until it can get the car key before
> can continue.
> 
> The code/thread you are running is waiting to cross a MUTEX is blocked
> from running until your wife returns the car key to the key peg in the
> house, then you can pick up the car key and do your thread errands.
> 
> If your wife wants to use the car she is then "blocked" until you return
> with the car key and put it back on the peg.
> 
> Others maybe waiting for the car key, your children or parents, and they
> could be ahead of you in the line. You must wait for the other "threads"
> to get their turn before you can have the car key.
> 
> Deadlocks can occur with MUTEX's if you are not careful.
> 
> Lets say you also have a trailer and you want to use both the car and
> the trailer at the same time. So you wait to get the car key and then
> wait to get the trailer. When you have both you can go on vacation.
> 
> But what if someone else wants the car and the trailer but they ask for
> the trailer first and then they try to get the car key. Meanwhile you
> have the car key and want the trailer.
> 
> Now, because of the order of events and because threads can be
> interrupted at anytime except in an Atomic function (further reading
> involved, but an Atomic function can't be switched out off of the
> CPU...) you have the key but your brother in law has the trailer. You
> can't get the trailer until he lets go and he can't have the car until
> you let go of the car key. This is deadly embrace, neither can continue
> and the threads lock up.
> 
> It is important to ask for resource in the correct order. That way
> whomever gets the car key first can have the trailer if they want it.
> But the thread/person that needs both must ask for the car key first and
> then is allowed to ask for the trailer.
> 
> Does this help?
> 
> Are you asking about a specific line in the * source code?
> 
> Race "The Tyrant" Vanderdecken
> "In the Land of the Blind the One-eyed man is Elvis"
> 
> -----Original Message-----
> From: asterisk-dev-bounces at lists.digium.com
> [mailto:asterisk-dev-bounces at lists.digium.com] On Behalf Of Angel Diaz
> Sent: 15 December 2004 10:22
> To: asterisk-dev at lists.digium.com
> Subject: [Asterisk-Dev] MUTEX definition
> 
> Hi,
>     Does somebody can explain/tell me what is the word MUTEX referred to
> in
> the * source code ?
> Thanks,
> Angel.
> 
> 
> _______________________________________________
> Asterisk-Dev mailing list
> Asterisk-Dev at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-dev
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev
> 
> 
> _______________________________________________
> Asterisk-Dev mailing list
> Asterisk-Dev at lists.digium.com
> http://lists.digium.com/mailman/listinfo/asterisk-dev
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev



More information about the asterisk-dev mailing list