IOS semaphore_wait_trap w głównym wątku powodujący zawieszenie w interfejsie użytkownika

Mam długo działającą funkcję w asynchronicznej (szeregowej) kolejce roboczej. Wiem, że czasami ta funkcja zawiesza się w określonym wywołaniu openCV. Z jakiegoś powodu to zawieszenie powoduje również zawieszenie głównego wątku. Po wstrzymaniu i wejściu w tryb debugowania widzę, że jest połączenie

semaphore_wait_trap()

w głównym wątku (kolejka)

Mogę zawiesić zawieszony wątek (Moja kolejka pracownicza) w trybie debugowania, a następnie ta pułapka zniknie, a GUI ponownie reaguje na telefon.

Po odblokowaniu wątku roboczego GUI reaguje na 1-2 sekundy (podejrzewam, że ten wątek nie zostanie ponownie aktywowany), a następnie interfejs użytkownika przestanie odpowiadać.

Ten wątek sprawia, że ​​niedispatch_sync() połączenia z głównym wątkiem / kolejką

Czy to możliwe, że IOS wstrzymuje główny wątek („przechwytuje” go), ponieważ pracownik działa długo?

Czy mogę go zmusić do usunięcia bloku?

Dodaję kilka ekranów wydruku stosu trybu debugowania.

Przed zawieszeniem zawieszonej kolejki:

I wisząca nić:

A po wstrzymaniu i zawieszeniu złej kolejki:

questionAnswers(2)

yourAnswerToTheQuestion