Нет, вы не должны пытаться это делать.Я думаю, что мьютексы pthread созданы для того, чтобы регулировать локальный доступ к какому-либо критическому ресурсу, и если ваша программа не знает, удерживает ли этот текущий поток блокировку, вы используете неправильный инструмент.Я вижу две альтернативы:
- сохранить переменную в стеке функции, где вы отслеживаете, что она заблокирована здесь, или, если действительно необходимо, сохранить идентификатор потока и сравнить с этим
- переключиться на
sem_t
в качестве управляющего DS.у них нет этого ограничения на то, чтобы их приклеивали к конкретному потоку, который их «держит», но они основаны на токене, поэтому любой поток, который получает токен, может выполнять требуемую работу.(но будьте осторожны и проверьте возвращаемое значение функций, которые эти процедуры могут прерывать.)