iOS:GCD技术——仅仅执行一次和执行多次 dispatch_once和dispatch_apply
2024-08-27 18:23:23
只执行一次 (多用于单例模式)
dispatch_once(dispatch_once_t *predicate, dispatch_block_t block);
dispatch_once_t *predicate:一个全局的变量 dispatch_block_t block:block函数块
多次执行
dispatch_apply(size_t iterations, dispatch_queue_t queue,void (^block)(size_t));
size_t iterations:执行次数 dispatch_queue_t queue:队列 void (^block)(size_t):block函数块
具体举例如下:
1、只执行一次时:
//自定义一个block函数块
//定义block
typedef void (^BLOCK)(void); //将执行代码封装到block中
BLOCK myBlock = ^(){
static int count = ;
NSLog(@"count=%d",count++);
};
//执行dispatch_once函数
//myblock调用
//myBlock();
//myBlock(); //只会执行一次,GCD once
static dispatch_once_t predicate;
dispatch_once(&predicate, myBlock);
dispatch_once(&predicate, myBlock);
//运行结果:虽然执行两次,只有一个输出
-- ::34.279 -GCD-once[:] count=
2、多次执行时:
//自定义一个block函数
//定义block
typedef void (^BLOCK)(size_t); //将函数封装到block
BLOCK myBlock = ^(size_t size){ static int count = ;
NSLog(@"count=%d",count++); };
//执行dispatch_apply
//GCD多次执行任务
dispatch_apply(, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, ), myBlock);
//运行结果如下:执行了5次,有5个输出
-- ::59.438 -GCD-apply[:] count=
-- ::59.438 -GCD-apply[:] count=
-- ::59.438 -GCD-apply[:] count=
-- ::59.438 -GCD-apply[:] count=
-- ::59.439 -GCD-apply[:] count=
最新文章
- Activiti学习(二)数据表结构
- [MOSEK] Stupid things when using mosek
- BFC布局原理
- 第二届中国移动互联网测试大会PPT
- 【001:转载 ubuntu下: 建立本地SVN服务器】
- Centos Python2 升级到Python3
- 与众不同 windows phone (46) - 8.0 通信: Socket, 其它
- Matrix Chain Multiplication[HDU1082]
- 2016年6月29日 星期三 --出埃及记 Exodus 14:26
- mysql创建PATH快捷
- 软件工程 speedsnail 第二次冲刺4
- 精美的 ( Android, iPhone, iPad ) 手机界面设计素材和线框图设计工具
- Linux安装JDK、MySQL和Tomcat
- P5315 头像上传
- mysql 拒绝登录解决
- 利用Spring的AbstractRoutingDataSource解决多数据源的问题
- 大话设计模式(C#)
- Annoy 近邻算法
- C# Mongo Client 2.4.2创建索引
- Dockerize PostgreSQL