我似乎无法在任何地方找到这个,但我相信一定有答案......
iphone应用服务可以同时连接多少个HTTP连接?换句话说,如果我异步构建并运行一堆NSURLConnections,那么在它开始排队之前有多少可以在飞行中?
此外,是否有一种方法可以通过编程方式检查可用和/或使用的线程数?
我正在尝试编写一个智能预取引擎,这些限制(如果有的话)将是有用的信息。
答案 0 :(得分:10)
iPhone无法开始排队NSURConnection
。这完全是你的责任。 iPhone将并行启动所有异步NSURLConnection
。唯一能阻止它的是你的记忆:)我最近实现了一个连接池(我的解决方案基于NSOperationQueue
),正因为如此。现在我可以控制并行连接,并且在加载数百个头像图像时我的应用程序不会崩溃。
关于你的第二个问题。我实际上不知道如何获取当前线程列表。我查看了NSThread
API但没有API的迹象......
答案 1 :(得分:1)
因此我假设在移动操作系统级别可能存在同时连接限制的原因是因为许多移动浏览器强制执行一个。有一些技术可以确保尽可能少的额外内容提取,从而加快网站移动版本的加载速度。图像是罪魁祸首,但css文件,javascript文件等都需要额外的连接。
在移动设备中,设置和拆除连接比使用更多数据的单个连接要昂贵得多,而一种提高页面加载性能的技术是将CSS和javascript嵌入页面本身。
听起来这个限制可能不存在于操作系统本身,至少在iphone平台上是这样。
就这个问题的答案而言,我发现这篇文章讨论了同时连接的实际限制。这不是一个硬限制,但我认为它回答了问题的关键点。
Background threads consuming 100% CPU on iPhone 3GS causes latent main thread