I'm not really an expert on thread synchronizaiton primitives, but can't the BasicEvent* and RtlEvent* event functions be used?