without reading the whole post: Is there a good reason to not just take the thread that is supposed to be waiting and add it to the thread pool until it should awake?