Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Jun 2000 12:26:50 -0700 (PDT)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Luoqi Chen <luoqi@watermarkgroup.com>
Cc:        jasone@canonware.com, smp@FreeBSD.ORG
Subject:   Re:  SMP meeting summary
Message-ID:  <200006261926.MAA29301@apollo.backplane.com>
References:   <200006261646.e5QGkUS06290@lor.watermarkgroup.com>

next in thread | previous in thread | raw e-mail | index | archive | help
:>      Compared with the use of tsleep(), mutexes have a number of
:>      advantages:
:> 
:>      - Each mutex has its own wait (sleep) queue.  When a process releases
:>        a mutex, it automatically schedules the next process waiting on the
:>        queue.  This is more efficient than searching a possibly very long,
:>        linear sleep queue.  It also avoids the flooding when multiple
:>        processes get scheduled, and most of them have to go back to sleep
:>        again.
:> 
:What about processes of different priorities blocking for the same mutex?
:Would you do a linear search on the queue? or have the queue sorted by
:priority? or a FIFO queue is good enough?
:
:-lq

    I've found the a sorted queue is best for this sort of thing.  It
    is possible to do a low-overhead sorted queue by having the insertion
    code scan from the beginning forward AND the end backwards until it
    finds the insertion point.  Usually it finds the insertion point in only
    one or two iterations.

    The wakeup code then simply pops the first proc from the queue and wakes
    it up.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200006261926.MAA29301>