GCD 简单使用(二)

来源:互联网 发布:svd分解 哪个 算法快 编辑:程序博客网 时间:2024/05/17 03:55
系统默认有两个队列
dispatch_get_main_queue 串行
dispatch_get_global_queue 并行

dispatch_queue_t myQueue = dispatch_get_main_queue();

并发 分别有三中权限
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGT,0);
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,0);

dispatch_once  保证在应用生命周期中让代码永远只运行一次  主要用于写单例 
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{});

dispatch_after 等几秒钟执行
double afterSeconds = 2.0;
dispatch_time_t afterTime = dispatch_time(DISPATCH_TIME_NOW,afterSeconds * NSEC_PER_SEC);
dispatch_after(afterTime,dispatch_get_main_queue(),^{});  

group 和 notify Dispatch Group机制允许我们监听一组任务是否完成:
dispatch_queue_t myQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFUILT,0);
dispatch_group_t group = dispatch_group_creat();

dispatch_group_async(group,queue,^{});
dispatch_group_async(group,queue,^{});

dispatch_group_notify(group,dispatch_get_main_queue(),^{});//都运行完后运行。


wait  等待一段时间看是否结束

diapatch_group_wait(group,DISPATCH_TIME_FOREVER);
dispatch_barrier_async 在他之前的任务运行完后它才运行 在它之后的任务必须等他运行完后才能运行。

0 0
原创粉丝点击