共计 1369 个字符,预计需要花费 4 分钟才能阅读完成。
在 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 即可。
论断:明天的分享到这就完结了。