天天看点

iOS开发多线程篇—GCD的基本使用

一、主队列介绍

主队列:是和主线程相关联的队列,主队列是gcd自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行。

提示:如果把任务放到主队列中进行处理,那么不论处理函数是异步的还是同步的都不会开启新的线程。

获取主队列的方式:

dispatch_queue_t queue=dispatch_get_main_queue();

(1)使用异步函数执行主队列中得任务,代码示例:

iOS开发多线程篇—GCD的基本使用
iOS开发多线程篇—GCD的基本使用

执行效果:

iOS开发多线程篇—GCD的基本使用

(2)使用同步函数,在主线程中执行主队列中得任务,会发生死循环,任务无法往下执行。示意图如下:

iOS开发多线程篇—GCD的基本使用

二、基本使用

1.问题

任务1和任务2是在主线程执行还是子线程执行,还是单独再开启一个新的线程?

iOS开发多线程篇—GCD的基本使用
iOS开发多线程篇—GCD的基本使用

打印结果:

iOS开发多线程篇—GCD的基本使用

2.开启子线程,加载图片

iOS开发多线程篇—GCD的基本使用
iOS开发多线程篇—GCD的基本使用

显示效果:

iOS开发多线程篇—GCD的基本使用
iOS开发多线程篇—GCD的基本使用

要求使用gcd的方式,在子线程加载图片完毕后,主线程拿到加载的image刷新ui界面。

iOS开发多线程篇—GCD的基本使用
iOS开发多线程篇—GCD的基本使用
iOS开发多线程篇—GCD的基本使用

好处:子线程中得所有数据都可以直接拿到主线程中使用,更加的方便和直观。

三、线程间通信

从子线程回到主线程

iOS开发多线程篇—GCD的基本使用
iOS开发多线程篇—GCD的基本使用