https://bugs.winehq.org/show_bug.cgi?id=46208
--- Comment #11 from Zebediah Figura z.figura12@gmail.com --- (In reply to Brendan McGrath from comment #9)
The next thing I tried was to move the WakeAll down to the server (in the hope that I could then provide a locking mechanism to make it atomic). But I never got the WakeAll working at the server level. I think I need to look more closely at what SELECT_KEYED_EVENT_WAIT and SELECT_KEYED_EVENT_RELEASE are doing.
This would probably work, but it's maybe not worthwhile. One alternative is to have an implementation almost identical to the futex path, but which uses RtlWaitOnAddress()/RtlWakeAddress() instead. It'd be horrendously slow, but I think we should be able to use native sync objects on all the platforms we care about.