IOS多线程
ios有三种主要方法:1、NSThread。2、NSOperation。3、GCD。
1、
调用方法如下:如果需要函数参数的话,可以通过Object传递。
1.1:[NSThread detachNewThreadSelector:@selector(threadInMainMethod:) toTarget:self withObject:nil];
1.2:NSThread* myThread = [[NSThread alloc] initWithTarget:self selector:@selector(threadInMainMethod:) object:nil];
1.3:
2、
NSOperation也是多线程的一种,NSOpertaion有2种形式.
(1) 并发执行
(2)非并发执行
3、
dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
block代表的是要做的事情, queue则是创建新线程还是加入到主线程的队列.
dispatch_queue_t 可以分为3个队列:
1.串行队列 每次只能执行一个任务. 由dispatch_queue_create创建
2.并发队列 同时可以执行多个任务. 由dispatch_get_global_queue(0, 0) 第一个0是优先级,第二个0是保留值填0
3.主队列 在程序的主线程中执行,用于更新UI. 由dispatch_get_main_queue()创建
分组执行
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(0, 0), block); 组里第一个线程
dispatch_group_async(group, dispatch_get_global_queue(0, 0), block); 组里第二个线程
dispatch_group_notify(group, dispatch_get_global_queue(0, 0), block); 组里的线程都执行完了才执行它
一些其他函数
dispatch_once_t once; 结构体
dispatch_once(&once, ^{...}) //在程序的生命周期内只执行一次