关于ios:iOS开发GCD

在iOS开发中常常会用到GCD,如果你在求职过程中GCD的应用也是面试官必问的,那么明天就来说说GCD的无关内容,不喜勿喷。

iOS开发交换技术群:563513413,不论你是大牛还是小白都欢送入驻 ,分享BAT,阿里面试题、面试教训,探讨技术, 大家一起交流学习成长!

一、GCD的概念

1.GCD全称是Grand Central Dispatch,可译为“CPU的中枢调度器”,是C语言,提供了十分多的弱小的函数

2.GCD的劣势:GCD是苹果公司为多核的并行运算提出的解决方案,它会主动利用更多的CPU内核(比方四核),而且它会主动治理线程的生命周期(创立线程、调度工作、销毁线程),开发者只需通知GCD想要执行什么工作,不需编写任何线程治理代码。

二、GCD的外围

GCD的两个核心内容:工作和队列。

1.工作:执行什么样的操作;

2.队列:拿来寄存工作。

三、GCD中执行工作的函数

1、同步函数:用同步的形式执行工作

dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);

2、异步函数:用异步的形式执行工作

dispatch_async(dispatch_queue_t queue, dispatch_block_t block)

同步和异步的区别:

同步:在以后线程中执行

异步:在另一条线程中执行

四、GCD相干内容

1.GCD中有4个术语比拟容易混同:同步、异步、并发、串行
2.同步和异步二者的次要影响:是否开启新的线程;
同步:在以后线程中执行工作,不具备开启新线程的能力
异步:在新的线程中执行工作,具备开启新线程的能力
3.并发和串行二者的次要影响:工作的执行形式
并发:多个工作并发(同时)执行
串行:一个工作执行结束后,再执行下一个工作
留神:同步函数+主队列 == 死锁(会卡死)
(值得注意的是,同步工作有一个个性是,只有一增加到队列中就要立马执行,主队列中永远就只有一条线程——主线程,此时主线程在期待着主队列调度同步工作,而主队列发现主线程上还有工作未执行完,就不会让同步工作增加到主线程上,由此就造成了相互期待(主队列在期待主线程执行完已有的工作,而主线程又在期待主队列调度同步工作,此时就造成所谓的死锁了。)

五、创立(获取)队列的形式

1、串行队列:

(1). 应用dispatch_queue_create函数创立串行队列

dispatch_queue_t queue =dispatch_queue_create("Lotheve", NULL);

//参数别离为队列名称、队列属性(个别用NULL即可)

(2).获取主队列(主队列是一种非凡的串行队列,放在主队列中的工作,都会放到主线程中执行)

dispatch_queue_t queue = dispatch_get_main_queue();

2、并发队列:

应用dispatch_get_global_queue函数取得全局并发队列

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

第一个参数别离为全局队列优先级,过程中存在3个全局队列:低、中(默认)、高三个优先级队列,这里抉择默认的。第二个参数临时无用,用0即可。

论断:明天的分享到这就完结了。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理