//
// ViewController.m
// 11-全局队列
//
// Created by gzxzmac on 16/1/29.
// Copyright © 2016年 gzxzmac. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self gcdDemo2];
}
/*
全局队列运行效果跟并发一样。都会开启多线程
- 在开发中一般使用全局队列
- 写第三方框架的时候
- barrier 必须使用并发队列
全局不需要我们去创建
并发需要我们手动去创建
*/
- (void)gcdDemo2 {
/**
第一个参数:优先级 iOS 7
* - DISPATCH_QUEUE_PRIORITY_HIGH: 高优先级
* - DISPATCH_QUEUE_PRIORITY_DEFAULT: 默认
* - DISPATCH_QUEUE_PRIORITY_LOW: 低
* - DISPATCH_QUEUE_PRIORITY_BACKGROUND: 后台
iOS 8 服务质量
QOS_CLASS_USER_INTERACTIVE
__QOS_CLASS_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0) = 0x21,
QOS_CLASS_USER_INITIATED
__QOS_CLASS_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0) = 0x19,
QOS_CLASS_DEFAULT
__QOS_CLASS_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0) = 0x15,
QOS_CLASS_UTILITY
__QOS_CLASS_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0) = 0x11,
QOS_CLASS_BACKGROUND
__QOS_CLASS_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0) = 0x09,
QOS_CLASS_UNSPECIFIED
__QOS_CLASS_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0) = 0x00,
第一个参数是优先级,为了适配iOS 7 和 8 ,现在一般使用 0 就可以了
第二个参数是苹果保留参数,未来使用,使用 0 就可以了
*/
// DISPATCH_QUEUE_PRIORITY_DEFAULT
// create,copy,retain
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
for (int i = 0; i < 200; ++i) {
dispatch_async(queue, ^{
[NSThread sleepForTimeInterval:1];
NSLog(@"%@ - %d",[NSThread currentThread],i);
});
}
}
- (void)gcdDemo1 {
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
dispatch_sync(queue, ^{
NSLog(@"%@",[NSThread currentThread]);
});
}
- (void)gcdDemo {
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
dispatch_async(queue, ^{
NSLog(@"%@",[NSThread currentThread]);
});
}
@end
多线程:全局队列
最新推荐文章于 2024-07-17 10:37:21 发布