检测原理
主线程死锁的检测和 ANR 的检测有些类似
创建一个线程,在线程运行方法中用 do…while… 循环处理逻辑,加了 autorelease 避免内存过高
有一个 awaitingResponse 属性和 watchdogPulse 方法。watchdogPulse 主要逻辑为设置 awaitingResponse 为 YES,切换到主线程中,设置 awaitingResponse 为 NO,
线程的执行方法里面不断循环,等待设置的 g_watchdogInterval 后判断 awaitingResponse 的属性值是不是初始状态的值,否则判断为死锁
1 | - (id) init |
处理异常
1 | - (void) handleDeadlock |