
GCD
眼睛会放光
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
GCD-group、notify、wait
1 dispatch_group_notify,dispatch_group_async执行完后再执行notify;2 dispatch_group_wait后代码等group执行完,再执行;例1 dispatch_group_notify- (void)groupAsyncSummit_notify{ dispatch_group_t group = dispatch...原创 2019-04-03 22:42:49 · 467 阅读 · 0 评论 -
GCD1-同步、异步,串行、并行
总结:1 同步与异步:同步、异步是针对线程而言;同步要先执行block再返回,异步则先返回而不用等待执行block;2串行并行 : 串行、并行是针对队列(任务);串行队列是时间上顺序执行,并行队列的任务是并发执行;//- (void)viewDidLoad中测试//全局变量:_mainQueue = dispatch_get_main_queue();_globalQu...原创 2019-04-05 16:52:05 · 288 阅读 · 0 评论 -
GCD2-当前线程
什么情况,block{}内当前线程为主线程?简单回答:dispatch_get_main_queue()调用;总结:不管是同步或异步调用,在系统主队列main queue调用,block即{}内当前线程[NSThread currentThread]是主线程,而非自定义的串行队列调用不是在主线程;本人已经测试过。...原创 2019-04-03 16:00:56 · 506 阅读 · 0 评论 -
GCD3-死锁条件、结构
一 gcd死锁条件,1 资源被限制1个进程使用(互斥条件);2 一个进程请求资源后阻塞,仍然保持不放(请求与保持条件);3 进程资源也不被强行剥夺(不剥夺条件);4 进程间造成循环等待资源的情况(循环等待条件);说明:进程之间的资源竞争造成,任何一个条件不成立都不会死锁。二 死锁结构?dispatch_x(q,^{ dispatch_sync(q,...原创 2019-04-03 16:54:37 · 313 阅读 · 0 评论 -
GCD:线程间通信
线程间通信?当使用dispath_async函数开辟线程执行任务的完成时,我们需要使用dispatch_async(dispatch_get_main_queue(), ^{});函数会到主线程内刷新UI。并完成通信。...原创 2019-04-21 16:43:54 · 163 阅读 · 0 评论 -
GCD-group:notify、enter、leave、weat,after,barrier
1dispatch_group_enter:与leave成对出现,通知group,下个任务要放入group中执行;解决多个请求依次执行问题;dispatch_group_leave:通知group,任务完成要移除;dispatch_group_notify:全部任务完成,就会调用;enter+1,leave减1,为0时才会通知group任务完成;dispatch_group_wait:...原创 2019-04-15 09:34:58 · 345 阅读 · 0 评论 -
GCD:semaphore解决同步与异步最大并发数
#import "Semaphore.h"@implementation Semaphore//参考:https://www.jianshu.com/p/2dd2433e2d4a#pragma - 解决同步问题:任务1、2、3按顺序执行+ (void)syncTest{ dispatch_queue_t queue = dispatch_get_global_queue(DI...原创 2019-04-15 09:41:38 · 298 阅读 · 0 评论 -
GCD:apply(作用:同步执行多个并发任务)
//多个任务并发执行完后,再执行apply后面任务,优于循环 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); //10:执行10次,index:执行编号 dispatch_apply(10, queue, ^(size_t index) {...原创 2019-04-15 10:31:49 · 169 阅读 · 0 评论