我在异步(串行)工作队列中有一个长时间运行的函数。我知道有时这个函数会挂在特定的 openCV 调用中。由于某种原因,这种挂起也会导致主线程挂起。暂停并进入调试模式时,我看到有人调用
semaphore_wait_trap()
在主线程(队列)上
我可以在调试模式下挂起挂起的线程(我的工作队列),然后这个陷阱消失,GUI 再次在电话上响应。
取消暂停工作线程后,GUI 会响应 1-2 秒(我怀疑直到再次激活该线程),然后 UI 再次变得无响应。
该线程不dispatch_sync()
调用主线程/队列
IOS是否有可能因为工作人员长时间运行而暂停主线程(“陷阱”它)?
我可以强制它删除块吗?
我正在添加调试模式堆栈的一些打印屏幕。
在暂停挂起队列之前:
和挂线:
并在暂停和挂起坏队列后: