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