标签:
//------------------NSOperationQueue----------
// 立即执行
NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
[operationQueue addOperationWithBlock:^{
}];
// 设置线程池的最大并发数
operationQueue.maxConcurrentOperationCount = 2;
// 创建了一个可以放入线程池的线程
NSInvocationOperation *inth1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(thread1:) object:nil];
// 设置放入线程池的线程的优先级
inth1.queuePriority = 1;
[operationQueue addOperation:inth1];
[NSThread isMainThread];// 当前的线程是否是主线程
[NSThread isMultiThreaded]; // 当前的线程是否是
[NSThread sleepForTimeInterval:1.0]; // 当前线程休眠xx秒
// 创建一个优先级任务
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
// 启动一个async 异步任务
dispatch_async(queue, ^{
for (int i=0; i<20; i++) {
NSLog(@"A = %d",i);
}
});
// 又启动一个异步任务
dispatch_async(queue, ^{
for (int i=0; i<20; i++) {
NSLog(@"B = %d",i);
}
});
//GCD最简单开启异步任务的形式 // 创建一个异步线程 传入优先级
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
});
// 开启一个任务在主线程上执行
dispatch_async(dispatch_get_main_queue(), ^{
});
// 开启一个异步任务只执行一次
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
});
// 开启一个异步任务组xxx 可以控制全部任务完成以后在执行什么任务
// 开启一个异步任务xx 秒以后执行
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
});
// group 任务组 group是一个任务组 可以为他添加多个任务
dispatch_group_t group = dispatch_group_create();
//添加任务 7s完成 /任务组/ / 优先级设置/
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
});
// 10s完成
dispatch_group_async(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
});
// 这些任务全部是异步执行的 此方法检测当任务组 group 没有正在执行的任务的时执行.... 任务
dispatch_group_notify(group, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"所有任务执行完成, 自动关机");
});
标签:
原文地址:http://www.cnblogs.com/dahongliang/p/4428366.html