Прежде чем передать поток другому коду, установите флаг, защищенный мьютексом.Когда поток вернется из кода, который вы не контролируете, снимите флажок, защищенный мьютексом.Затем вы можете проверить, где вам нужно, находится ли поток в коде, который вы не контролируете.
За пределами кода нет различия между заблокированным и неблокированным.Если вы буквально проверили состояние потока, вы получите бессмысленные результаты.
Например, рассмотрим две реализации библиотеки.
A: Мы выполняем всю работу в вызывающем потоке.
B: Мы отправляем рабочий поток для выполнения работы.Вызывающий поток блокируется до завершения рабочего процесса.
В обоих случаях A и B код, который вы не контролируете, одинаково продвигается вперед.Ваша идея о получении статуса даст разные результаты.Так что это не то, что вы хотите.