Threads and GCD

在后台,我们的app其实是在同一时间内运行着多种集合的命令指示,也就是说这个app可以同时使用2个或者3个cpu中心。每一个cpu都能独立的完成自己的工作,这也大大提升了app的性能。这种工作原理就叫做threads,它有以下几点重要的附加条件(provisos):

  1. threads执行你所给它的代码,它并不是随机的从每一个viewDidLoad()找几行代码来执行。这也就是说,系统是默认只使用一个cpu来执行代码的,因为我们没有创建给其他cpu执行的threads。
  2. 所有的user interface的工作都必须发生在main thread中,main thread也就是我们程序建立的初始thread。如果你想尝试在其他thread中执行这些代码,那结果也许会成功,也许会失败,也许会诱发一些出人意料的问题,或者干脆它会崩溃。
  3. 我们无法控制什么时候thread会被执行,或者以什么样的顺序来执行。我们只是创建threads,把它们交给系统,让系统来以最优的方式去决定什么时候,以什么样的顺序来执行。
  4. 因为我们无法控制执行顺序,我们必须要十分警惕的确保每次只有一个thread在更改我们的数据。

大体来讲,如果你在访问远程资源,那应该使用后台thread(任何一个不是main
thread的thread)。如果你在执行一些缓慢的代码,那也用后台thread;或者有一些可以平行执行的代码,比如要给100张照片加滤镜,那就使用若干个后台threads来执行他们。

这里说一下GCD(Grand Central Dispatch),GCD的能力就是让我们不用再去考虑创建和使用多线程(multithreading)的麻烦,我们不用去考虑如何创建或者销毁线程,不用去考虑我们是否创建了最佳数量的线程,GCD自动的给我们创建线程,并且会以最佳的方式来创建执行。
GCD automatically handles thread creation and management, automatically balances based on available system resources, and automatically factors in Quality of Service to ensure your code runs as efficiently as possible.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容