您的位置:首页 > 移动开发 > IOS开发

IOS之线程(GCD)

2014-11-25 16:06 155 查看
//GCD(先进先出 FIFO)
//串行:前一个任务完成,后一个任务才能执行
//并行:任务在派发时是有序的,但是不用等第一个任务执行完成才开始
//GCD队列分为三种:主队列,全局队列,自定义队列

//1,使用主队列实现任务派发(串行),在主线程中
/*
dispatch_queue_t mainQueue = dispatch_get_main_queue();
//1.1,添加任务
dispatch_async(mainQueue, ^{
NSLog(@"第一个任务:当前线程是:%@",[NSThread currentThread]);
});
dispatch_async(mainQueue, ^{
NSLog(@"第二个任务:当前线城是:%@",[NSThread currentThread]);
});
dispatch_async(mainQueue, ^{
NSLog(@"第三个任务:当前线程:%@",[NSThread currentThread]);
});
dispatch_async(mainQueue, ^{
NSLog(@"第四个线程:当前线程:%@",[NSThread currentThread]);
});
*/

NSLog(@"当前任务:%@",[NSThread currentThread]);
//2,自定义队列(串行)
/*
dispatch_queue_t myQueue = dispatch_queue_create("com.lanou.myqueue", DISPATCH_QUEUE_SERIAL);
//2.1,添加任务
dispatch_async(myQueue, ^{
NSLog(@"第一个任务:当前任务:%@",[NSThread currentThread]);
});
dispatch_async(myQueue, ^{
NSLog(@"第二个任务,当前任务:%@",[NSThread currentThread]);
});
dispatch_async(myQueue, ^{
NSLog(@"第三个任务,当前任务:%@",[NSThread currentThread]);
});
*/

//3,自定义队列(并行)
/*
dispatch_queue_t myQueue1 = dispatch_queue_create("com.lanou", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(myQueue1, ^{
NSLog(@"第一个任务:当前任务:%@",[NSThread currentThread]);
});
dispatch_async(myQueue1, ^{
NSLog(@"第二个任务,当前任务:%@",[NSThread currentThread]);
});
dispatch_async(myQueue1, ^{
NSLog(@"第三个任务,当前任务:%@",[NSThread currentThread]);
});
*/
//全局
dispatch_queue_t globleQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//3.1,添加任务
dispatch_async(globleQueue, ^{
NSLog(@"第一个任务,当前任务:%@",[NSThread currentThread]);
});
dispatch_async(globleQueue, ^{
NSLog(@"第二个任务,当前任务:%@",[NSThread currentThread]);
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: