关于iOS多线程小记
 visitors

这篇文章我将整理一下iOS中的几种多线程方案,以及使用方法和注意事项。当然也会给出几种简单的代码案例,再试实际使用中去感受它们的区别。

概述

在了解线程前,我们需要先了解进程。一句话概括线程和进程就是:操作系统可以同时执行多个任务,每个任务就是进程,进程可以同时执行多个任务,每个任务就是线程。对于多线程的优点大致可以总结为以下几点:

  • 进程间不能共享内存,但线程间共享内存非常容易。
  • 系统创建进程需要为该进程重新分配系统资源,但创建线程的代价要小得多,因此使用多线程来实现任务并发比多进程效率高得多。

在实际开发过程中多线程是非常有用的,假如用户点击界面上某个按钮的时候,该按钮需要执行的任务需要耗时很长,如果我们直接在UI线程中完成这个任务,在该任务执行完成返回之前,UI线程被该任务阻塞,将无法再相应用户的其它操作。在这段时间内用户对界面上的任何操作将不会被相应(除非按Home键返回),这并不是我们希望看到的结果。一般这个时候我们能够想到的办法就是将耗时的操作放到非UI线程(开启一个线程)中完成,这样UI线程就不会被阻塞,应用也就不会失去相应。

iOS系统大致提供了如下3种实现多线程:

  • NSThread
  • NSOperation和NSOperationQueue
  • GCD(Grand Central Dispatch)