On Wednesday, 30 September 2015 at 10:32:01 UTC, Jonathan M Davis
wrote:
On Tuesday, September 29, 2015 22:38:42 Johannes Pfau via
Digitalmars-d-learn wrote:
[...]
What I took from the answers to that SO question was that in
general, it really doesn't matter whether a condition variable
has spurious wakeups. You're going to have to check that the
associated bool is true when you wake up anyway. Maybe without
spurious wakeups, it wouldn't be required if only one thread
was waiting for the signal, but you'd almost certainly still
need an associated bool in case it becomes true prior to
waiting. In addition, if you want to avoid locking up your
program, it's ferquently the case that you want a timed wait so
that you can check whether the program is trying to exit (or at
least that the thread in question is being terminated), and
you'd need a separate bool in that case as well so that you can
check whether the condition has actually been signaled. So,
ultimately, while spurious wakeups do seem wrong from a
correctness perspective, when you look at what a condition
variable needs to do, it usually doesn't matter that spurious
wakeups exist, and a correctly used condition variable will
just handle spurious wakeups as a side effect of how it's used.
- Jonathan M Davis
Yea, I guess you're right. The class in the example I posted was
a crude reproduction of something I'm using right now in another
project:
http://codepad.org/M4fVyiXf
I don't think it would make a difference whether it woke up
randomly or not. I've been using this code regularly with no
problems.
Bit