GCD

//

//  ZBMainViewController.m

//  TestProject

//

//  Created by 张先森 on 14/12/5.

//  Copyright (c) 2014年 zhibin. All rights reserved.

//

#import "ZBMainViewController.h"

@interface ZBMainViewController ()

@end

@implementation ZBMainViewController

- (void)viewDidLoad {

    [super viewDidLoad];

   // [self InitControls];

    

    [self InitControls];

}

//异步添加到并发队列 开启新线程

-(void)InitControls{

    dispatch_queue_t  queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_async(queue, ^{

        NSLog(@"%@c测试1",[NSThread currentThread]);

    });

    dispatch_async(queue, ^{

               NSLog(@"%@c测试2",[NSThread currentThread]);

    });

    dispatch_async(queue, ^{

               NSLog(@"%@c测试3",[NSThread currentThread]);

    });

}

//异步添加到同步线程  会开启一个线程

-(void)InitControls2{

    

    dispatch_queue_t queue=dispatch_queue_create("zhibin", NULL);

  

    dispatch_async(queue, ^{

          NSLog(@"%@c测试1",[NSThread currentThread]);

    });

    dispatch_async(queue, ^{

                  NSLog(@"%@c测试2",[NSThread currentThread]);

    });

    dispatch_async(queue, ^{

        

        NSLog(@"%@c测试3",[NSThread currentThread]);

    });

}

//同步添加到并发线程中  不开启新线程   线程失去并发能力

-(void)InitControls3{

    dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    

    

    dispatch_sync(queue, ^{

                NSLog(@"%@c测试1",[NSThread currentThread]);

    });

    

    dispatch_sync(queue, ^{

                NSLog(@"%@c测试2",[NSThread currentThread]);

    });

    

    dispatch_sync(queue, ^{

                NSLog(@"%@c测试3",[NSThread currentThread]);

    });

}

//同步添加串行队列 不会开启新线程

-(void)InitControls4{

    dispatch_queue_t  queue=dispatch_queue_create("zhibin", NULL);

    dispatch_sync(queue, ^{

              NSLog(@"%@c测试1",[NSThread currentThread]);

    });

    dispatch_sync(queue, ^{

        NSLog(@"%@c测试2",[NSThread currentThread]);

    });

    dispatch_sync(queue, ^{

        NSLog(@"%@c测试3",[NSThread currentThread]);

    });

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

/*

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

}

*/

@end

原文地址:https://www.cnblogs.com/zhibin/p/4152201.html