博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程5--GCD简介
阅读量:5278 次
发布时间:2019-06-14

本文共 2232 字,大约阅读时间需要 7 分钟。

/******************************************************/

 
 同步函数
 
 (1)并发队列:不会开线程
 
 (2)串行队列:不会开线程
 
 异步函数
 
 (1)并发队列:能开启N条线程
 
 (2)串行队列:开启1条线程
/*******************************************************/

 

/*****************用异步函数往并发队列中添加任务********************//* //可以创建多个子线程    //1.获得全局的并发队列    dispatch_queue_t queue =  dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);    //2.添加任务到队列中,就可以执行任务    //异步函数:具备开启新线程的能力    dispatch_async(queue, ^{        NSLog(@"下载图片1----%@",[NSThread currentThread]);    });    dispatch_async(queue, ^{        NSLog(@"下载图片2----%@",[NSThread currentThread]);    });    dispatch_async(queue, ^{        NSLog(@"下载图片3----%@",[NSThread currentThread]);    });    //打印主线程    NSLog(@"主线程----%@",[NSThread mainThread]);*//*****************用异步函数往串行队列中添加任务*******************/   //会开启子线程,但只会开启一个;    //打印主线程    NSLog(@"主线程----%@",[NSThread mainThread]);        //创建串行队列    dispatch_queue_t queue=dispatch_queue_create("name", NULL);    //第一个参数为串行队列的名称,是c语言的字符串    //第二个参数为队列的属性,一般来说串行队列不需要赋值任何属性,所以通常传空值(NULL)        //2.添加任务到队列中执行    dispatch_async(queue, ^{        NSLog(@"图片1----%@",[NSThread currentThread]);        NSLog(@"图片2----%@",[NSThread currentThread]);        NSLog(@"图片3----%@",[NSThread currentThread]);    });    //NSLog(@"主线程----%@",[NSThread mainThread]);    //3.释放资源    //    dispatch_release(queue); /*****************用同步函数往并发队列中添加任务*******************//*   //不会创建子线程;    dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);    dispatch_sync(queue, ^{        NSLog(@"image1---%@",[NSThread currentThread]);        NSLog(@"image2---%@",[NSThread currentThread]);        NSLog(@"image3---%@",[NSThread currentThread]);            });    NSLog(@"mainThread%@",[NSThread mainThread]);*//*****************用同步函数往串行队列中添加任务*******************//*   //不会创建子线程;    dispatch_queue_t queue=dispatch_queue_create("name", NULL);    dispatch_sync(queue, ^{        NSLog(@"image1%@",[NSThread currentThread]);        NSLog(@"image2%@",[NSThread currentThread]);        NSLog(@"image3%@",[NSThread currentThread]);    });    NSLog(@"mainThread%@",[NSThread mainThread]);*/ /********************************************************/

 

转载于:https://www.cnblogs.com/sunjianfei/p/5725048.html

你可能感兴趣的文章
mysql 5.7占用400M内存优化方案
查看>>
Play Framework框架安装指南
查看>>
Java:对象的强、软、弱和虚引用
查看>>
Dynamics 365 CRM large instance copy
查看>>
冒烟测试
查看>>
long int c = int a * int b的问题
查看>>
PHP生成PDF文档
查看>>
C# 文件下载四方法
查看>>
C++第7章总结
查看>>
此地址使用了一个通常用于网络浏览以外目的的端口。出于安全原因,Firefox 取消了该请求。...
查看>>
Vue.js系列之项目结构说明
查看>>
windows连接oracle数据库
查看>>
ListCtrl控件的使用
查看>>
线程--demo3
查看>>
一个学通信的人写的情书
查看>>
590. N-ary Tree Postorder Traversal - LeetCode
查看>>
一线架构师实践指南(一)
查看>>
Kendo UI开发教程(23): 单页面应用(一)概述
查看>>
转载:ios程序编译链接参数 all_load 的 ld duplicate symbol _main 的 bug及修复
查看>>
C - 思考使用差分简化区间操作
查看>>