3

我在我的应用程序中遇到了竞争条件,每当我暂停调试时,除了 1 个线程之外的所有或所有线程都会卡在 syscall_thread_switch 上。它在模拟器上的再现频率更高,在 iPad Air 上也一样。总是有至少 2 个线程卡在 CocoaLumberjack 的 queueLogMessage 中: -- 见截图。

我以前在 8.1 和 8.2 上从未见过这种情况,但我在 8.3 上经常遇到这种情况。我并不是说这是 8.3 的错误 :)

这是我以前从未调试过的复杂程度,所以我不确定该怎么做。我希望我提供了足够的信息,如果您需要更多信息,请告诉我(如果不清楚,请具体说明如何获取信息)。你能帮我调试一下吗?!数以百万计的感谢。

线程概述

线程详细信息 1

线程细节 2

主线程位置

4

1 回答 1

3

我在 iOS 8.3 的 NSOperationQueue 中遇到了类似的 NSOperations 问题(与 CocoaLumberjack 无关)。我有并发操作创建自己的线程,这不再需要。它在 8.2 中表现得非常好,但不是 8.3。

在 start 方法中,我只是替换了:

[NSThread detachNewThreadSelector:@selector(main) toTarget:self withObject:nil];

和:

[self main];
于 2015-04-20T16:39:09.663 回答