我在我的应用程序中遇到了竞争条件,每当我暂停调试时,除了1个线程之外的所有或所有线程都会卡在syscall_thread_switch上。它在模拟器上更频繁地再现,但也在iPad Air上再现。在CocoaLumberjack的queueLogMessage中总共至少有2个线程: - 请参见截图。
我以前从未在8.1和8.2上看过这个,但我经常在8.3上看到它。我并不是说这是一个8.3小虫:)
这是我以前从未调试过的复杂程度,所以我不知道该怎么做。我希望我能提供足够的信息,如果您需要更多信息,请告诉我(如果信息不明确,请具体说明如何获取信息)。你能帮我调试一下吗?!数百万的感谢。
答案 0 :(得分:3)
我在iOS 8.3的NSOperationQueue中遇到了与NSOperations类似的问题(与CocoaLumberjack无关)。我有并发操作创建自己的线程,不再需要它。它在8.2中表现得非常好,但不是8.3。
在start方法中,我只需更换:
[NSThread detachNewThreadSelector:@selector(main) toTarget:self withObject:nil];
使用:
[self main];