In PDP I used condition variables to signal queue writes. This seems to be incorrect. Semaphores are actually a lot better for managing work queues. First, they are simpler to use, but second they also can ensure that no events are missed. I.e. during the handling of a changed condition, the condition might change multiple times, which is missed by the handling thread.