WaitObjectListener
void (WaitObjectListener::*hook)(Parameter1, Parameter2),
while (WaitObjectListener* listener = it.Next())
void add_wait_object_listener(struct WaitObjectListener* listener);
void remove_wait_object_listener(struct WaitObjectListener* listener);
struct WaitObjectListener : DoublyLinkedListLinkImpl<WaitObjectListener> {
virtual ~WaitObjectListener();
typedef DoublyLinkedList<WaitObjectListener> WaitObjectListenerList;
NotifyWaitObjectListeners(void (WaitObjectListener::*hook)(Parameter1),
while (WaitObjectListener* listener = it.Next())
NotifyWaitObjectListeners(&WaitObjectListener::ConditionVariableInitialized,
private SchedulerListener, private WaitObjectListener {
WaitObjectListener::~WaitObjectListener()
add_wait_object_listener(struct WaitObjectListener* listener)
remove_wait_object_listener(struct WaitObjectListener* listener)
NotifyWaitObjectListeners(&WaitObjectListener::RWLockInitialized, lock);
NotifyWaitObjectListeners(&WaitObjectListener::RWLockInitialized, lock);
NotifyWaitObjectListeners(&WaitObjectListener::MutexInitialized, lock);
NotifyWaitObjectListeners(&WaitObjectListener::SemaphoreCreated, id,