扩展: 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的简单封装的更多相关文章

  1. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

    前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...

  2. FMDB简单封装和使用

    工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...

  3. Android--Retrofit+RxJava的简单封装(三)

    1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...

  4. okhttp3 get post 简单封装

    最近打算在新项目中使用 okhttp3, 简单封装了一下异步 get post 因为 CallBack 也是在子线程中执行,所以用到了 Handler public class MyOkHttpCli ...

  5. python网页请求urllib2模块简单封装代码

    这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...

  6. 对pymysql的简单封装

    #coding=utf-8 #!/usr/bin/python import pymysql class MYSQL: """ 对pymysql的简单封装 "& ...

  7. iOS开发——UI篇OC篇&UITableView简单封装

    UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也 ...

  8. iOS sqlite 增删改查 简单封装(基于 FMDB)

    /** *  对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 * *  基于 FMDB * *  操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整 ...

  9. ADO简单封装(MFC)

    简单封装了一下,不是很严谨. /************************************************************************/ /* INSTRUC ...

随机推荐

  1. [Environment Build] Maven环境配置

    1. 下载并解压maven文件 2. 在环境变量中配置一个JAVA_HOME的变量,指向你本地的JDK 3. 在系统变量中新建一个名为:MAVEN_HOME的变量,指向你的maven解压文件的bin目 ...

  2. 6.Knockout.Js(加载或保存JSON数据)

    前言 Knockout可以实现很复杂的客户端交互,但是几乎所有的web应用程序都要和服务器端交换数据(至少为了本地存储需要序列化数据),交换数据最方便的就是使用JSON格式 – 大多数的Ajax应用程 ...

  3. java 版本安装

    系统:Ubuntu 10.04 JDK:jdk-6u20-linux-i586.bin 当然,我已经在sun的官方网站上下载好了必要的jdk,由于是在linux下安装,跟平时习惯的windows有所不 ...

  4. squid判断文件是否修改机制分析

    前提: 1.我写了一个简单的http服务器,以下简称 httpserver 2.前端使用squid做反向代理,以下简称 squid.squid同时反向代理了2台http服务器,其中一台是httpser ...

  5. iOS-CALayer

    iOS开发UI篇—CAlayer层的属性 一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property ...

  6. win10里安装.net3.5

    在CMD窗口里面输入这样一段,来安装Microsoft.MET Framework 3.5 Dism /online /enable-feature /featurename:NetFX3 /All ...

  7. 使用 Swift 制作一个新闻通知中心插件(1)

    input[type="date"].form-control,.input-group-sm>input[type="date"].input-grou ...

  8. IIS 404.17 错误解决方案

    操作方法:在管理员身份打开命令行,运行以下命令: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -i

  9. 编译基于ARM LINUX的驱动模块的Makefile

    KERNELDIR =/home/wenhao/platform/linux-2.6.34PWD := $(shell pwd)CROSS_COMPILE = /usr/local/arm/4.3.2 ...

  10. Linux设置:环境变量

    一.在相关配置文件中添加可执行文件/头文件/静态库/动态库的搜索路径 对所有用户有效在/etc/profile添加. 只对当前用户有效在Home目录下的.bashrc或.bash_profile里添加 ...