IOS semaphore_wait_trap в основном потоке, вызывающий зависание в пользовательском интерфейсе

У меня есть долго работающая функция внутри асинхронной (последовательной) рабочей очереди. Я знаю, что иногда эта функция зависает внутри определенного вызова openCV. По какой-то причине это зависание также приводит к зависанию основного потока. При остановке и входе в режим отладки я вижу, что есть вызов

semaphore_wait_trap()

в главном потоке (Очередь)

Я могу приостановить зависание потока (Моя рабочая очередь) в режиме отладки, и затем эта ловушка исчезнет, и графический интерфейс снова станет отзывчивым на телефоне.

После отмены приостановки рабочего потока графический интерфейс реагирует на 1-2 секунды (я подозреваю, что этот поток снова активируется), а затем пользовательский интерфейс снова перестает отвечать.

Эта тема не делаетdispatch_sync() звонки в основной поток / очередь

Возможно ли, что IOS приостанавливает основной поток ("ловушки» это) потому что рабочий долго бежит?

Могу ли я заставить его снять блок ??

Я добавляю несколько экранов печати из стека режима отладки.

Прежде чем приостановить зависание очереди:

И висящая нить:

И после приостановки и приостановки плохой очереди:

Ответы на вопрос(2)

Ваш ответ на вопрос