constexpr size computation
various optimizations
support for using high number of threads

When there are more threads than the hardware can handle,
it is required that threads that spin without progress go
to sleep. This is achieved by using
std::condition_variable_any together with a null_lock,
which allows notify_all to be used to wake up all sleeping threads.