@coder82 yes, your assumption is correct, if you block, thread and coroutine will be also blocked
I don't think that there is public API of disapatchers that would give you callback about blocking all the threads, so you have to provide own way detect it, or by writing own dispatcher, but maybe would be even easier to do that on level of custom thread pool executor (that can be used by coroutines by converting it to Dispatcher), so you easily can get amount of active threads using getActiveCount method of Thread pool, and just use execute() as hook when coroutine is dispatched
Would be nice to use Dispatcher thread pool, it's more optimized and allows reuse threads, but there is no pilublic API for it and for legacy code approach with custom executor service looks as reasonable solution