“__workq_kernreturn”在iOS崩溃日志中或暂停执行应用程序时的含义是什么?

时间:2012-02-03 14:11:59

标签: iphone objective-c ios ipad unix

在iOS上调试时,如果我暂停执行,我经常会看到多个对“__workq_kernreturn”的引用。

如果我的应用程序碰巧崩溃,我经常看到多个线程被识别如下:

Thread 19:
0   libsystem_kernel.dylib              0x332d0cd4 __workq_kernreturn + 8

Thread 20:
0   libsystem_kernel.dylib              0x332d0cd4 __workq_kernreturn + 8

Thread 21:
0   libsystem_kernel.dylib              0x332d0cd4 __workq_kernreturn + 8

“__ workq_kernreturn”是否表示正在等待退出的线程或死锁的线程?这有什么值得担心的吗?

1 个答案:

答案 0 :(得分:9)

除非有很多,否则无需担心。如果有很多,这表明你可能会产生比你应该更多的线程,但workq_kernreturn本身仍然不是问题。它通常意味着线程正在完成。如果您想了解它的作用,可以在opensource.apple.com获取它的来源。

您可能正在关注的最常见的堆栈是:

_workq_kernreturn
_pthread_wqthread
start_wqthread

由于优化,你在那里看不到对_pthread_workq_return()的调用,但这就是实际发生的事情。 _workq_kernreturn正在等待自旋锁完成,因此它可以在其队列(或退出)上运行下一个东西。