ios-关于GCD的简单使用
来源:互联网 发布:c语言1到100的素数 编辑:程序博客网 时间:2024/05/15 08:39
ios-关于GCD的简单使用
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//串行队列
self.serialQueue = dispatch_queue_create("serialQueue.ys.com", DISPATCH_QUEUE_SERIAL);
//并行队列
self.concurrentQueue = dispatch_queue_create("concurrentQueue.ys.com", DISPATCH_QUEUE_CONCURRENT);
[self queue_taskTest];
[self queue_taskTest2];
[self queue_taskTest3];
[self queue_taskTest4];
}
/**
串行队列 + 同步执行
*/
-(void)queue_taskTest{
dispatch_sync(self.serialQueue, ^{
NSLog(@"1========%@",[NSThread currentThread]);
});
dispatch_sync(self.serialQueue, ^{
NSLog(@"2========%@",[NSThread currentThread]);
});
dispatch_sync(self.serialQueue, ^{
NSLog(@"3========%@",[NSThread currentThread]);
});
NSLog(@"4========%@",[NSThread currentThread]);
}
/**
串行队列 + 异步执行
*/
-(void)queue_taskTest2{
dispatch_async(self.serialQueue, ^{
NSLog(@"1========%@",[NSThread currentThread]);
});
dispatch_async(self.serialQueue, ^{
NSLog(@"2========%@",[NSThread currentThread]);
});
dispatch_async(self.serialQueue, ^{
NSLog(@"3========%@",[NSThread currentThread]);
});
NSLog(@"4========%@",[NSThread currentThread]);
}
/**
并行队列 + 同步执行
*/
-(void)queue_taskTest3{
dispatch_sync(self.concurrentQueue, ^{
NSLog(@"1========%@",[NSThread currentThread]);
});
dispatch_sync(self.concurrentQueue, ^{
NSLog(@"2========%@",[NSThread currentThread]);
});
dispatch_sync(self.concurrentQueue, ^{
NSLog(@"3========%@",[NSThread currentThread]);
});
NSLog(@"4========%@",[NSThread currentThread]);
}
/**
并行队列 + 异步执行
*/
-(void)queue_taskTest4{
dispatch_async(self.concurrentQueue, ^{
NSLog(@"1========%@",[NSThread currentThread]);
});
dispatch_async(self.concurrentQueue, ^{
NSLog(@"2========%@",[NSThread currentThread]);
});
dispatch_async(self.concurrentQueue, ^{
NSLog(@"3========%@",[NSThread currentThread]);
});
NSLog(@"4========%@",[NSThread currentThread]);
}
2017-09-14 11:55:15.666 GCDTest[34886:62953482] 1========<NSThread: 0x600000079840>{number = 1, name = main}
2017-09-14 11:55:15.666 GCDTest[34886:62953482] 2========<NSThread: 0x600000079840>{number = 1, name = main}
2017-09-14 11:55:15.666 GCDTest[34886:62953482] 3========<NSThread: 0x600000079840>{number = 1, name = main}
2017-09-14 11:55:15.667 GCDTest[34886:62953482] 4========<NSThread: 0x600000079840>{number = 1, name = main}
串行队列 + 异步执行:异步执行具备开辟新线程的能力,并且串行队列必须等到前一个任务执行完才能开始执行下一个任务,同时,异步执行会使内部函数率先返回,不会与正在执行的外部函数发生死锁。
2017-09-14 11:56:23.080 GCDTest[34920:62956523] 4========<NSThread: 0x608000078300>{number = 1, name = main}
2017-09-14 11:56:23.080 GCDTest[34920:62956596] 1========<NSThread: 0x600000262fc0>{number = 3, name = (null)}
2017-09-14 11:56:23.080 GCDTest[34920:62956596] 2========<NSThread: 0x600000262fc0>{number = 3, name = (null)}
2017-09-14 11:56:23.081 GCDTest[34920:62956596] 3========<NSThread: 0x600000262fc0>{number = 3, name = (null)}
并行队列 + 同步执行:同步执行不具备开辟新线程的能力,并且Block函数执行完成后dispatch函数才会返回。
2017-09-14 11:56:49.052 GCDTest[34942:62958026] 1========<NSThread: 0x6000000765c0>{number = 1, name = main}
2017-09-14 11:56:49.053 GCDTest[34942:62958026] 2========<NSThread: 0x6000000765c0>{number = 1, name = main}
2017-09-14 11:56:49.053 GCDTest[34942:62958026] 3========<NSThread: 0x6000000765c0>{number = 1, name = main}
2017-09-14 11:56:49.053 GCDTest[34942:62958026] 4========<NSThread: 0x6000000765c0>{number = 1, name = main}
并行队列 + 异步执行:开辟了多个线程,执行任务的顺序是随机的
2017-09-14 11:57:13.576 GCDTest[34956:62959139] 1========<NSThread: 0x60000026cf00>{number = 3, name = (null)}
2017-09-14 11:57:13.576 GCDTest[34956:62959084] 4========<NSThread: 0x600000260240>{number = 1, name = main}
2017-09-14 11:57:13.576 GCDTest[34956:62959141] 3========<NSThread: 0x60800026b080>{number = 5, name = (null)}
2017-09-14 11:57:13.576 GCDTest[34956:62959138] 2========<NSThread: 0x60800026afc0>{number = 4, name = (null)}
- 关于iOS GCD的简单使用
- ios-关于GCD的简单使用
- 关于ios多线程GCD的简单介绍
- iOS GCD简单使用
- iOS 多线程之GCD的简单使用
- 关于GCD/NSThread/NSOperationQueue的简单使用
- ios-关于GCD的进阶使用
- 关于iOS多线程的使用(主要是关于GCD的)
- ios 关于GCD多线程使用
- GCD的简单使用
- GCD-的简单使用
- iOS GCD的使用
- iOS GCD的使用
- iOS GCD的使用
- ios GCD的使用
- 关于iOS的GCD的介绍以及使用
- iOS :GCD的简单实用
- ios使用GCD实现多线程的简单介绍
- Visual Studio 2017 + java + C++ and swig
- python(2)--语法
- 利用HBuilder开发基于MUI的H5+ app中使用百度地图定位功能
- android中插入图片的三种方式
- Linux的环境变量
- ios-关于GCD的简单使用
- jQuery选择器
- python网络爬虫-使用BeautifulSoup
- Jetson TX1内核kernel编译与烧写
- Java对一维数组排序:冒泡,选择,插入,比较效率
- React性能优化 PureComponent 使用指南
- c++的动态类
- 浅谈Velocity.js
- Android Studio SVN 使用方法