GCD的简单封装
扩展: dispatch_block_t :无参数block,使用起来很简单
下载链接:http://pan.baidu.com/s/1bndN6Yb
//串行队列
- (void)test1 {
WJGCDQueue *queue = [[WJGCDQueue alloc]initSerial];
[queue execute:^{
NSLog(@"1--%@",[NSThread currentThread]);
}];
[queue execute:^{
NSLog(@"2--%@",[NSThread currentThread]);
}];
[queue execute:^{
NSLog(@"3--%@",[NSThread currentThread]);
}];
}
//并行队列
- (void)test2 {
WJGCDQueue *queue = [[WJGCDQueue alloc]initConcurrent];
[queue execute:^{
NSLog(@"1--%@",[NSThread currentThread]);
}];
[queue execute:^{
NSLog(@"2--%@",[NSThread currentThread]);
}];
[queue execute:^{
NSLog(@"3--%@",[NSThread currentThread]);
}];
} //复杂运算,更新ui
- (void)test3 {
[WJGCDQueue executeInGlobalQueue:^{
NSLog(@"处理业务逻辑");
[WJGCDQueue executeInMainQueue:^{
NSLog(@"更新UI");
}];
}];
}
//延时操作
- (void)test4 {
NSLog(@"%@",[NSDate date]);
[WJGCDQueue executeInMainQueue:^{
NSLog(@"%@",[NSDate date]);
} afterDelaySecs:];
}
//定时器
- (void)test5 {
self.gcdTimer = [[WJGCDTimer alloc]initInQueue:[WJGCDQueue mainQueue]];
[self.gcdTimer event:^{
NSLog(@"GCD定时器");
} timeInterval:NSEC_PER_SEC];
[self.gcdTimer start];
}
//队列组
- (void)test6 {
WJGCDGroup *group = [[WJGCDGroup alloc]init];
WJGCDQueue *queue = [[WJGCDQueue alloc]initConcurrent];
[queue execute:^{
NSLog(@"线程1");
} inGroup:group];
[queue notify:^{
NSLog(@"线程执行");
} inGroup:group];
} //信号量
- (void)test7 {
WJGCDSemaphore *semaphore = [[WJGCDSemaphore alloc]init];
[semaphore signal];
[semaphore wait];
}
GCD的简单封装的更多相关文章
- Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池
前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...
- FMDB简单封装和使用
工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...
- Android--Retrofit+RxJava的简单封装(三)
1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...
- okhttp3 get post 简单封装
最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...
- python网页请求urllib2模块简单封装代码
这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...
- 对pymysql的简单封装
#coding=utf-8 #!/usr/bin/python import pymysql class MYSQL: """ 对pymysql的简单封装 "& ...
- iOS开发——UI篇OC篇&UITableView简单封装
UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...
- iOS sqlite 增删改查 简单封装(基于 FMDB)
/** * 对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 * * 基于 FMDB * * 操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整 ...
- ADO简单封装(MFC)
简单封装了一下,不是很严谨. /************************************************************************/ /* INSTRUC ...
随机推荐
- LightOJ 1317 第八次比赛 A 题
Description You probably have played the game "Throwing Balls into the Basket". It is a si ...
- iFreeThinking - 记录生活,分享思考
http://www.ifreethinking.com iFreeThinking.com 是一个非营利性个人博客网站.开于 2014 年,博客主要记录分享一些思考和感悟. 文章列表:http:// ...
- Android线程---UI线程和非UI线程之间通信
近期自学到了线程这一块,用了一上午的时间终于搞出来了主.子线程间的相互通信.当主线程sendMessage后,子线程便会调用handleMessage来获取你所发送的Message.我的主线程 ...
- SCSF智能客户端学习笔记(一)
什么是智能客户端 要了解智能客户端,首先要认识瘦客户端技术和胖客户端技术各自的优缺点. 对于前者,典型的应用就是使用浏览器,通过输入URL远程访问服务端,并向服务端发送命令,获取服务端的资源,然后在客 ...
- Mysql的相关命令
1.登录服务器 mysql -h host -u user -p mysql -h host -u user -p 数据库 2.使用SHOW语句找出服务器上当前存在什么数据库:mysql> SH ...
- vsftpd配置文件说明
(1)常用选项: chroot_local_user=YES #限制所有的用户均不能切换到其他目录 allow_writeable_chroot=YES #允许根目录可写 FTP的工作模式有两种,一种 ...
- mozilla css developer center
https://developer.mozilla.org/en-US/docs/Web/CSS
- cocos2dx中如何从一张图片中切割一部分显示成小图片
1.通常我们拿到的资源中,通常都是许多张小图片压缩到一张图片里了,我们如何在使用的时候把它切割出来呢? 2.例如我们要把上面这张图片按组分隔开来 CCSprite* newGameNormal = C ...
- 【Unique Binary Search Trees】cpp
题目: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For e ...
- 基于word制作网站webhelp
处理问题描述:现在我有个javaweb项目,需要在portal上面点击help即可打开: 当前搜索百度(谷歌不能用了),没有找到更好的解决方案,自己想了个比较简单实用的方法,仅供参考: 设计原理:利用 ...