News for hackers. Stuff that matters.
Re:Implementing Queues for Event-Driven Programs by no-bugs on Monday June 13, 2016 @11:13AM (#11894491)
> Additionally, when you unlock a mutex before signalling the condition, another thread may be scheduled in between that may invalidate the condition that was signalled. This may introduce a race condition.

And if you unlock the mutex after signalling the condition, another thread can be still scheduled in between the call to notify() and whatever-notified-thread-which-starts-to-run (and can still invalidate whatever-conditions-it-can-invalidate). There is absolutely no guarantee whatsoever that notified-thread gets to your mutex first (not that it really should matter for correctness in any sane program BTW).

> I signal my condition variables with mutexes locked because it's easier to guarantee correctness that way.

There is no difference in guarantees in practice whether you notify within or after; I'm not even sure that there is any difference in theory (exactly because the thread-which-was-notified is not guaranteed to get mutex first).

There are no comments on this comment yet.