Vic*_*ram 9 unix iphone objective-c ipad ios
在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
Run Code Online (Sandbox Code Playgroud)
"__workq_kernreturn"是否表示正在等待退出的线程,或者是一个死锁的线程?这有什么值得担心的吗?
除非有很多,否则没什么好担心的.如果有很多,这表明你可能会产生比你应该更多的线程,但这workq_kernreturn
本身仍然不是问题.它通常意味着线程正在完成.如果您想了解它的作用,可以在opensource.apple.com上找到它的来源.
你可能正在看的最常见的堆栈就是这个:
_workq_kernreturn
_pthread_wqthread
start_wqthread
Run Code Online (Sandbox Code Playgroud)
由于优化,你在那里看不到对_pthread_workq_return()的调用,但这就是实际发生的事情._workq_kernreturn
只是等待自旋锁完成所以它可以在其队列(或退出)上运行下一个东西.
归档时间: |
|
查看次数: |
3398 次 |
最近记录: |