Replacing boost functionality with C++11 stuff.
Motivated by #18227, but should stand alone. Changing from boost::condition_var
to std::condition_var
means threadGroup.interrupt_all
isn’t enough to interrupt serviceQueue
anymore, so that means calling stop()
before join_all()
is needed. And the existing reverselock.h code doesn’t work with sync.h’s DebugLock code (because the reversed lock won’t be removed from g_lockstack
which then leads to incorrect potential deadlock warnings), so I’ve replaced that with a dedicated class and macro that’s aware of our debug lock behaviour.