iOS 多线程编程<二、GCD基本用法>
来源:互联网 发布:python 日志时间格式 编辑:程序博客网 时间:2024/06/05 17:49
一:在学习多线程之前首先区分几个容易混淆的概念
二:GCD的基本用法
//// ViewController.m// GCD//// Created by fe on 16/9/30.// Copyright © 2016年 fe. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [self syncFIFOQueue];}//异步函数+并发队列 总结:会开辟线程,任务并发执行- (void)asyncGlobalQueue{ /*第一种创建并发队列方法 *第一个参数:C语言的字符串,用来表示队列名 *第二个参数:队列属性 DISPATCH_QUEUE_SERIAL(串行队列) * DISPATCH_QUEUE_CONCURRENT(并发队列) */ dispatch_queue_t queue = dispatch_queue_create("异步函数+并发队列", DISPATCH_QUEUE_CONCURRENT); /* *第二种创建并发队列的方法 *第一个参数:队列优先级, *第二个参数:预留参数,永远填0 */ //dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); /*创建异步函数 *第一个参数:队列 *第二个参数:block,在里面封装任务 */ dispatch_async(queue, ^{ NSLog(@"----Task1----%@",[NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"----Task2----%@",[NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"----Task3----%@",[NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"----Task4----%@",[NSThread currentThread]); });}//异步函数+串行队列 总结:会开辟线程,任务FIFO执行- (void)asyncFIFOQueue{ /* *第一个参数:C语言的字符串,用来表示队列名 *第二个参数:队列属性 DISPATCH_QUEUE_SERIAL(串行队列) * DISPATCH_QUEUE_CONCURRENT(并发队列) */ dispatch_queue_t queue = dispatch_queue_create("异步函数+串行队列", DISPATCH_QUEUE_SERIAL); /*创建异步函数 *第一个参数:队列 *第二个参数:block,在里面封装任务 */ dispatch_async(queue, ^{ NSLog(@"----Task1----%@",[NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"----Task2----%@",[NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"----Task3----%@",[NSThread currentThread]); }); dispatch_async(queue, ^{ NSLog(@"----Task4----%@",[NSThread currentThread]); }); }//同步函数+并发队列 总结:不会开辟新线程,任务FIFO执行- (void)syncGlobalQueue{ /* *第一个参数:C语言的字符串,用来表示队列名 *第二个参数:队列属性 DISPATCH_QUEUE_SERIAL(串行队列) * DISPATCH_QUEUE_CONCURRENT(并发队列) */ dispatch_queue_t queue = dispatch_queue_create("同步函数+并发队列", DISPATCH_QUEUE_CONCURRENT); /*创建同步函数 *第一个参数:队列 *第二个参数:block,在里面封装任务 */ dispatch_sync(queue, ^{ NSLog(@"----Task1----%@",[NSThread currentThread]); }); dispatch_sync(queue, ^{ NSLog(@"----Task2----%@",[NSThread currentThread]); }); dispatch_sync(queue, ^{ NSLog(@"----Task3----%@",[NSThread currentThread]); }); dispatch_sync(queue, ^{ NSLog(@"----Task4----%@",[NSThread currentThread]); });}//同步函数+串行队列 总结:不会开辟新线程,任务FIFO执行- (void)syncFIFOQueue{ /* *第一个参数:C语言的字符串,用来表示队列名 *第二个参数:队列属性 DISPATCH_QUEUE_SERIAL(串行队列) * DISPATCH_QUEUE_CONCURRENT(并发队列) */ dispatch_queue_t queue = dispatch_queue_create("同步函数+串行队列", DISPATCH_QUEUE_SERIAL); /*创建同步函数 *第一个参数:队列 *第二个参数:block,在里面封装任务 */ dispatch_sync(queue, ^{ NSLog(@"----Task1----%@",[NSThread currentThread]); }); dispatch_sync(queue, ^{ NSLog(@"----Task2----%@",[NSThread currentThread]); }); dispatch_sync(queue, ^{ NSLog(@"----Task3----%@",[NSThread currentThread]); }); dispatch_sync(queue, ^{ NSLog(@"----Task4----%@",[NSThread currentThread]); });}@end
0 0
- iOS 多线程编程<二、GCD基本用法>
- ios多线程-GCD基本用法
- iOS多线程GCD的基本用法
- iOS 多线程编程<五、GCD其它用法>
- iOS多线程编程--GCD
- iOS多线程编程GCD
- iOS开发多线程篇—GCD的常见用法(二)
- 【Mac OS X/iOS多线程编程】GCD用法学习笔记
- IOS开发 GCD多线程编程技术(二)
- ios多线程 -- GCD 常见用法
- iOS多线程GCD简单用法
- iOS多线程(二)GCD
- IOS的GCD基本用法
- iOS-GCD多线程编程4
- iOS多线程编程之GCD
- iOS多线程编程之GCD
- 【读书笔记】iOS-GCD-多线程编程
- iOS 多线程编程之GCD
- Cookie
- 23种设计模式,UML图
- 《iOS Run Loop 线下分享》的简单总结
- Android Studio JNI 的静动态注册开发以及C/C++ JNIEnv的理解
- 浅析busybox内置的ftpd服务程序如何配置
- iOS 多线程编程<二、GCD基本用法>
- [调试相关]预编译文件中宏定义打印日志
- Linux查找最近修改的文件
- MySql学习笔记-增删改查操作
- firefox插件(plugin)开发概述
- 第五周项目二 建立链栈算法库
- python 使用MethodType绑定方法到类
- 分析ClassLoader
- 52. N-Queens II