不说废话。
最基础GCD创建多线程do something 然后回到主线程(并行队列):
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 下载等耗时操作
dispatch_async(dispatch_get_main_queue(), ^{
// 回到主线程 do something
});
});
拆开可以这样写:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
});
dispatch_async(dispatch_get_main_queue(), ^{
// 回到主线程 do something
});
解释一下 : dispatch_async 为异步 dispatch_sync 为同步
dispatch_get_global_queue 获取(还是创建就不清楚了)当前线程池
DISPATCH_QUEUE_PRIORITY_DEFAULT 设置queue 的优先级为默认 ,0 应该是标示符(一般用不到)
这里简单介绍一下串行队里使用:
dispatch_queue_t queue = dispatch_queue_create("123", NULL);(红色内容随便,应该类似名字的东西 具体不祥)
dispatch_async(queue, ^{
NSLog(@"1");
for (int i = 0; i<10000; i++) {
NSLog(@"%d",i);
}
});
dispatch_async(queue, ^{
NSLog(@"2");
});
这里 两段Block代码 逐个执行