首页 > 编程语言 > 详细

多线程理解

时间:2016-01-06 23:39:39      阅读:224      评论:0      收藏:0      [点我收藏+]
GCD(Grand Central Dispatch)是苹果公司开发的,以优化应用程序支持多核和其他对称多处理系统的系统
GCD是函数级编程,所以更高效,功能也更强大
任务:
具有一定功能的代码段,一般是一个block或者函数。
分发队列:
GCD以队列的方式进行工作,FIFO(先进先出)
GCD会根据分发队列的不同,创建合适数量的线程执行队列中的任务。
队列分两种
一种是串行队列:(1,系统提供的,2自定义)
一种是并行队列:(1,系统提供的,2自定义)
//采用系统的方式添加串行的任务
- (IBAction)SerialMainAction:(UIButton *)sender {
//    系统提供的串行队列其实就是主线程队列
//    1拿到主线程
    dispatch_queue_t main = dispatch_get_main_queue();
//    2给主线程队列添加任务
    dispatch_async(main, ^{
        NSLog(@"omg%@",[NSThread currentThread]);
    });
    dispatch_async(main, ^{
        NSLog(@"two%@",[NSThread currentThread]);
    });
    dispatch_async(main, ^{
        NSLog(@"three%@",[NSThread currentThread]);
    });
    dispatch_async(main, ^{
        NSLog(@"four%@",[NSThread currentThread]);
    });
    dispatch_async(main, ^{
        NSLog(@"five%@",[NSThread currentThread]);
    });
    
}

上面的是串行队列,上面也说了,串行队列其实就是主线程队列,添加的几个任务是为了看出执行顺序

下面的是自定义的方式添加串行任务,里面的几个任务也是为了查看执行顺序

//采用自定义的方式添加串行任务
- (IBAction)SerialBySelfAction:(UIButton *)sender {
    //创建串行队列
    dispatch_queue_t serialQueue = dispatch_queue_create("yan5", DISPATCH_QUEUE_SERIAL);
//    2添加任务
    dispatch_async(serialQueue, ^{
        NSLog(@"one%@",[NSThread currentThread]);
    });
    dispatch_async(serialQueue, ^{
        NSLog(@"two%@",[NSThread currentThread]);
    });
    dispatch_async(serialQueue, ^{
        NSLog(@"three%@",[NSThread currentThread]);
    });
    dispatch_async(serialQueue, ^{
        NSLog(@"four%@",[NSThread currentThread]);
        
    });
    dispatch_async(serialQueue, ^{
        NSLog(@"five%@",[NSThread currentThread]);
    });
    
    
    
}

 

 

 

 

 

多线程理解

原文:http://www.cnblogs.com/guzhen/p/5107796.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!