了解iOS中的多线程

时间:2012-10-18 22:04:47

标签: ios multithreading nsthread nstask nsrunloop

我正在尝试更详细地了解iOS上的多线程。我浏览了一些类引用,例如NSThreadNSRunLoopNSTask ..

首先如以下链接所示: use of runloop

RunloopThread内运行。

那么为什么我们需要在我们的应用中定义自己的Runloop?在NSThread的情况下,它很有用,因为一些耗时的进程可以在一个单独的线程中运行,这样应用程序仍然可以在主线程上响应。

2 个答案:

答案 0 :(得分:4)

如果您有一个想要定期继续工作的线程,那么与线程的运行循环交互可能会很有用。也就是说,一个运行循环会做一些工作,然后当它完成该工作时,它会让线程休息一段时间,然后在以后恢复工作 - 有效地阻止线程退出。您不需要与他们进行交互或定期自己配置/创建它们(如果您使用的是高级抽象,例如Foundation,那么只有一小部分应用程序符合条件,因为Foundation会在大多数情况下代表您设置它们)。

如果您的辅助线程只执行指定任务并且需要等待某些外部事件(例如下载完成),您(通常)不需要与运行循环交互

答案 1 :(得分:0)

您可以考虑使用NSOperationQueuesNSOperationsNSBlockOperations,因为这些将自行管理,允许取消任务,并可以在主线程和后台线程上进行调度。< / p>