ios多线程开发 GCD常见用法

1-延迟执行

可以安排其线程(1),主队列

dispatch_queue_t queue= dispatch_get_main_queue();

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), queue, ^{

NSLog(@"主队列--延迟执行------%@",[NSThread currentThread]);

});

可以安排其线程(2),并发队列

1.获取全局并发队列

dispatch_queue_t queue1= dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

2.计算任务执行的时间

dispatch_time_t when=dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC));

3.会在when这个时间点,执行queue中的这个任务

dispatch_after(when, queue1, ^{

NSLog(@"并发队列-延迟执行------%@",[NSThread currentThread]);

});

2.使用dispatch_once一次性代码

使用dispatch_once函数能保证某段代码在程序运行过程中只被执行1次

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

// 只执行1次的代码(这里面默认是线程安全的)

});

整个程序运行过程中,只会执行一次。

3.队列组

使用队列组可以让任务1和任务2同时进行,且当两个任务都完成的时候回到主线程进行界面显示操作。

//1.创建一个队列组

dispatch_group_t group = dispatch_group_create();

//2.开启一个任务

dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{

});

//3.开启第二个任务

dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{

});

//同时执行任务1\任务2操作

//4.等group中的所有任务都执行完毕, 再回到主线程执行其他操作

dispatch_group_notify(group,dispatch_get_main_queue(), ^{

});

时间: 2024-08-02 03:55:16

ios多线程开发 GCD常见用法的相关文章

iOS多线程技术—GCD的用法

iOS多线程技术—GCD的用法 一.主队列介绍 主队列:是和主线程相关联的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行. 提示:如果把任务放到主队列中进行处理,那么不论处理函数是异步的还是同步的都不会开启新的线程. 获取主队列的方式: 1 // 2 // YYViewController.m 3 // 12-GCD的基本使用(主队列) 4 // 5 // Created by 孔医己 on 14-6-25. 6 // Copyright (c) 2014

iOS多线程开发——GCD的使用与多线程开发浅析(二)

对于iOS多线程开发,我们时刻处于学习之中,在看书中,看文档中,项目开发中,都可以去提高自己.最近刚看完了<Objective-C高级编程 iOS与OS X多线程和内存管理>这本书后,对多线程有了更为深入的理解,故在此做一个总结与记录.这本书我已经上传至网盘  https://pan.baidu.com/s/1c2fX3EC ,这本书是iOS开发者必读的书之一,写得很不错,欢迎大家下载阅读.书的封面如下,故也称狮子书: . (1)多线程会遇到的问题 . 多线程会出现什么问题呢?当多个线程对同一

ios多线程开发 GCD的基本使用

/** *获取全局并发队列 */ dispatch_queue_t queue =  dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // 1.添加到异步任务队列中执行,开启新线程 dispatch_async(queue, ^{ // something }); // 2.添加到同步任务队列中执行,不会开启新线程,并发队列失去并发功能 dispatch_sync(queue, ^{ // something });

iOS多线程开发——NSThread浅析

在IOS开发中,多线程的实现方式主要有三种,NSThread.NSOperation和GCD,我前面博客中对NSOperation和GCD有了较为详细的实现,可以参考<iOS多线程开发--NSOperation/NSOperationQueue浅析><iOS多线程开发--GCD的使用与多线程开发浅析>.以及对于多线程中的同步异步,并行串行等概念,我在<GCD实践--串行队列/并发队列与iOS多线程详解>中也有较为详细的讲解.为了学习的完整性,今天我们主要从代码层面来实现

iOS多线程开发小demo7 GCD队列组

// DYFViewController.m // 623-08-队列组 // // Created by dyf on 14-6-23. // Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved. // #import "DYFViewController.h" @interface DYFViewController () @property (weak, nonatomic) IBOutlet UIImageVi

iOS多线程开发小demo6 GCD

// DYFViewController.m // 623-07-GCD // // Created by dyf on 14-6-23. // Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved. // #import "DYFViewController.h" @interface DYFViewController () @property (weak, nonatomic) IBOutlet UIImageVi

iOS多线程开发之深入GCD

iOS多线程开发之深入GCD 一.前言 在以前的一些系列博客中,对iOS中线程的管理做了总结,其中涵盖了GCD的相关基础知识:http://my.oschina.net/u/2340880/blog/417746.那里面将GCD的线程管理能力,列队组能力,通过信号和消息控制程序流程的能力都有介绍,这里,我们继续深入GCD的功能,通过GCD来处理一些逻辑更加复杂的代码功能. 二.延时追加任务 当我们在程序中处理延时任务的时候,我们一般会通过两种方式,一种是通过定时器进行延时执行,另外一种是通过如下

iOS多线程 NSThread/GCD/NSOperationQueue

http://www.cnblogs.com/kenshincui/p/3983982.html iOS开发系列--并行开发其实很容易 2014-09-20 23:34 by KenshinCui, 9738 阅读, 19 评论, 收藏,  编辑 --多线程开发 概览 大家都知道,在开发过程中应该尽可能减少用户等待时间,让程序尽可能快的完成运算.可是无论是哪种语言开发的程序最终往往转换成汇编语言进而解释成机器码来执行.但是机器码是按顺序执行的,一个复杂的多步操作只能一步步按顺序逐个执行.改变这种

IOS多线程开发

本文转载至 http://blog.csdn.net/davidsph/article/details/8171607 IOS的多线程,一般分为三种方式: 1,Thread;2, Cocoa operations;3, Grand Central Dispatch (GCD) (iOS4 才开始支持) 下面简单说明一下: 1:NSThread   创建方式主要有两种: [NSThread detachNewThreadSelector:@selector(myThreadMainMethod:)