【发布时间】:2011-11-14 17:17:10
【问题描述】:
我有一个应用程序,我在其中从网络下载大量资源,并对每个资源进行一些处理。我不希望这项工作发生在主线程上,但它非常轻量级和低优先级,所以所有这些都可以真正发生在同一个共享工作线程上。这样做似乎是一件好事,因为设置和拆除所有这些工作线程(其中没有一个工作线程会持续很长时间,等等)需要做一些工作。
但令人惊讶的是,似乎没有一种简单的方法可以让所有这些工作发生在一个共享的线程上,而不是为每个任务生成一个新线程。由于多年来似乎出现了大量实现并发的途径,这使情况变得复杂。 (显式NSThreads、NSOperationQueue、GCD 等)
我是否高估了产生所有这些线程所涉及的开销?我是否应该不费吹灰之力,并使用更简单的每个任务线程方法?使用 GCD,并假设它在线程(重)使用方面比我更聪明?
【问题讨论】:
-
不知道为什么这不简单?在具有全局线程的对象上使用
performSelector:onThread:withObject:waitUntilDone:对我来说似乎很简单?您在寻找更简单的方法吗? -
这很简单,前提是您已经努力创建线程并设置某人在其上发送
NSRunloop。 -
没错。那里的复杂性在于线程的护理和馈送,而不是如何发送它。
标签: ios multithreading nsurlconnection grand-central-dispatch nsoperationqueue