On Feb 22, 2012, at 4:22 PM, Desai, Kashyap wrote:
> Just curious to know, What is a reason that thread can do blocking sleep but 
> can't do unbounded sleep ?

When you block, the scheduler can run other threads and only needs to wake up 
and run your thread after the blocking condition is completed.

However, you don't want to busy-wait in a spin lock/mutex for any lengthy 
period of time.  If your thread was allowed to do an unbounded sleep, 
especially in a fast interrupt handler context, what's going to wake it up?  An 
NMI like the reset button [1]?  :-)

Regards,
-- 
-Chuck

[1]: Well, you could also call STI to permit clock interrupts or something else 
to fire an interrupt, but then your interrupt handler needs to be re-entrant.  
(And watch out for multiple nested interrupts blowing out the available stack 
space....)

_______________________________________________
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"

Reply via email to