是否可以杀死由于 dispatch_sync 而被锁定的线程?这是代码:
dispatch_sync(q_, ^{
...
});
这是锁定时的堆栈跟踪:
#0 0x00007fff8d69951a in semaphore_wait_trap ()
#1 0x00007fff9aad7c5b in _os_semaphore_wait ()
#2 0x0000000100aec692 in _dispatch_barrier_sync_f_slow ()
我尝试使用 pthread_kill
但线程没有终止。
最佳答案
如果你翻遍所有的POSIX资料,是有可能的。
现实中,就算了。你永远不会让它发挥作用。如果代码中存在死锁,摆脱死锁的唯一方法是修复代码。
顺便说一句,iOS 设备上的死锁比崩溃严重得多。当一个应用程序崩溃时,许多用户甚至没有注意到,他们只是重新启动它。当应用程序死锁时,用户需要使用更复杂的过程来手动杀死应用程序。
通常,我会尽可能避免 dispatch_sync
。
关于ios - 杀死一个用 dispatch_sync 锁定的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28282343/