pthread_{mutex,cond} & fifo/starvation/scheduling policy

Daniel Eischen deischen at freebsd.org
Thu Jan 21 10:41:13 UTC 2010


On Thu, 21 Jan 2010, Bernard van Gastel wrote:

> In real world application such a proposed queue would work almost 
> always, but I'm trying to exclude all starvation situations primarily 
> (speed is less relevant). And although such a worker can execute it 
> work and be scheduled fairly, the addition of the work to the queue 
> can result in starvation (one of the threads trying to add to the 
> queue could stall forever if the lock is heavily contested).
>
> Is this possible with POSIX thread stuff? Or is the only option to use 
> IPC like message queues for this?

I don't see what your problem is if you are using mutexes
correctly.  Adding or removing work to the queue should be
very quick; you lock the mutex, add or remove work to/from
the queue, signal the condition variable to wake up any
threads waiting for work (when adding work), and unlock the
mutex.  That's it.

-- 
DE


More information about the freebsd-hackers mailing list