condition_variable::_runWithNotifyable allocates a linked list member for the notification list per invocation. It also does this under both the condvar mutex as well as the mutex for the predicate waiter.
Two things need to happen for this:
- notifyables need to either own a std::list<Notifyable*> or be intrusively linked listed
- NotInterruptible needs to not be a global (making it a thread local would do)