0

dispatch_async()我怀疑我的应用程序正在使用调用创建大量线程。我见过超过 50 和 80 个线程的崩溃报告。这是一个大型代码库,我没有编写,也没有完全剖析。我想做的是获取我们线程使用情况的概况;我们正在创建多少个线程,何时创建它们等。

我的目标是弄清楚我们把所有的时间都花在了交换线程上,如果使用 NSOperationQueue 会更好,所以我们有更多的控制权,而不是随便用 dispatch_async'ing 块。

欢迎任何对此进行调查的想法/技术。

4

2 回答 2

1

看起来你需要看看仪器。从 Apple 文档或 WWDC 会议或任何您想要的地方了解它。有很多资源

如果您需要实现一些依赖项,通常 NSOperationQueues 肯定会更好。


正如 Brad Llarson 指出的那样,有一些 WWDC 会议在许多情况下都有帮助。然而,除了优化你的调用之外,你还应该考虑让你的代码更易于阅读并且更好。我从未在 iOS 上见过包含多达 80 个队列的源代码。app的架构一定有问题。

如果我错了,请告诉我任何人。

于 2012-08-16T17:15:56.877 回答
1

如果您正在旋转那么多线程,那么您很可能会受到 I/O 限制。此外,Mike 的文章很棒,但它已经很老了(尽管仍然与常规队列相关)。

而不是 using dispatch_async,您应该使用dispatch_io和朋友来满足您的 I/O 要求。他们为您处理所有异步监视和回调......并且不会用无关的处理线程超出您的进程。

于 2012-08-16T23:28:10.903 回答