IOS之线程(GCD)

//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]);
    });
    

阅读更多
文章标签: ios 线程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭