[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [OT] Win32 condition variable implementation

From: Philip Martin <philip_at_codematters.co.uk>
Date: 2003-09-10 17:13:37 CEST

mark benedetto king <mbk@lowlatency.com> writes:

> wait(cond,mutex):
> acquire(cond->mutex)
> cond->num_waiters++
> release(cond->mutex)
> release(mutex)
> down(cond->sem)
> up(cond->ack)
> acquire(mutex)
>
> deliver(cond,count):
> up(cond->sem, count)
> down(cond->ack, count)
> count->num_waiters -= count
>
> signal(cond):
> acquire(cond->mutex)
> deliver(cond, min(1, cond->num_waiters))
> release(cond->mutex)
>
> broadcast(cond):
> acquire(cond->mutex)
> deliver(cond, cond->num_waiters);
> release(cond->mutex)

 thread 1 waits
 thread 2 waits
 thread 3 broadcasts
 thread 1 wakes up and runs
 thread 1 acquires mutex and calls wait
 thread 1 blocks waiting for cond->mutex held by thread 3
 thread 2 tries to wake up but blocks waiting for mutex held by thread 1
 deadlock

-- 
Philip Martin
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Sep 10 17:14:26 2003

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.