0

我正在从远程服务器实现优化的图像下载机制。

我想到了两种不同的方法。


1. 创建一个新线程,并在该线程中以异步方式下载所有图像。
2.创建线程以下载每个图像。假设我要下载 50 个图像,那么将有 50 个线程来下载这些图像。

在设计和优化方面哪种方法更好?

谢谢,
吉姆。

4

1 回答 1

1

您的两种解决方案都有缺陷。

1)只有一个线程意味着您一次只下载一个图像?这似乎效率低下

2)出于同样的原因,一次下载是一个坏主意,同时下载 50 个图像是一个糟糕的性能主意,并且会减慢一切。还要考虑下载数据的线程对系统来说是资源昂贵的(网络 I/O、磁盘 I/O 等)。

我可以建议不要重新发明轮子并使用NSOperationQueue 这是队列的可可/可可触摸实现,这意味着您可以添加多少操作(在您的情况下,操作是图像下载)但您可以指定最大并发操作数(通过maxConcurrentOperationCount属性)。

NSOperationQueue 处理所有多线程的东西,从 iOS 4 开始它使用 GCD 来执行操作。

于 2012-07-13T09:54:17.383 回答