gpt4 book ai didi

ios - dispatch_async 和 [NSURLConnection sendSynchronousRequest]

转载 作者:可可西里 更新时间:2023-11-01 04:03:28 26 4
gpt4 key购买 nike

围绕这个话题有各种各样的问题,很多建议说不要在 dispatch_async 中使用 sendSynchronousRequest,因为它会阻塞线程,并且 GCD 会产生很多新的工作线程来服务所有同步 URL 请求。

关于 iOS 5 [NSURLConnection sendAsynchronousRequest:queue:completionHandler:] 在幕后做了什么,似乎没有人给出明确的答案。

我读过的一篇文章指出它“可能”进行优化,并且“可能”使用运行循环——但肯定不会为每个请求创建一个新线程。

当我在使用 sendAsynchronousRequest:queue:completionHandler 时暂停调试器时,堆栈跟踪如下所示:

screenshot

..现在看来 sendAsynchronousRequest:queue:completionHandler 实际上正在调用 sendSynchronousRequest,而且当我使用异步方法而不是同步方法时,我仍然创建了大量线程。

是的,使用异步调用还有其他好处,我不想在这篇文章中讨论。

我感兴趣的只是性能/线程/系统使用情况,如果我在 dispatch_async 中使用同步调用而不是使用异步调用会更糟。

我也不需要关于使用 ios4 异步调用的建议,这纯粹是为了教育目的。

有人对此有任何有见地的回答吗?

谢谢

最佳答案

这实际上是开源的。 http://libdispatch.macosforge.org/

您不太可能比 Apple 的实现更有效地管理工作线程。在此上下文中,“异步”并不意味着选择/轮询,它仅意味着调用将立即返回。因此,实现产生线程也就不足为奇了。

关于ios - dispatch_async 和 [NSURLConnection sendSynchronousRequest],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11526862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com