同步,异步,串行,并行队列

  1 #import "ViewController.h"
  2 
  3 @interface ViewController ()
  4 
  5 @end
  6 
  7 @implementation ViewController
  8 
  9 - (void)viewDidLoad {
 10     [super viewDidLoad];
 11     // Do any additional setup after loading the view, typically from a nib.
 12     //[self testSyncWithSerialQueue];
 13     //[self testSyncWithConcurrentQueue];
 14     //[self testAsyncWithSerialQueue];
 15     [self testAsyncWithConcurrentQueue];
 16 }
 17 
 18 
 19 
 20 //1.同步方式向串行队列提交代码
 21 //前面的线程执行完成后,才开始执行后面的线程
 22 -(void)testSyncWithSerialQueue
 23 {
 24     //创建串行队列
 25     dispatch_queue_t serialQueue = dispatch_queue_create("serialQueue", DISPATCH_QUEUE_SERIAL);
 26     
 27     //线程一
 28     dispatch_sync(serialQueue, ^{
 29         for (int i=0; i<100; i++) {
 30             NSLog(@"线程一:%d",i);
 31         }
 32     });
 33     
 34     //线程二
 35     dispatch_sync(serialQueue, ^{
 36         for (int i=0; i<100; i++) {
 37             NSLog(@"线程二:%d",i);
 38         }
 39     });
 40 }
 41 
 42 //2.同步方式向并行队列提交代码
 43 //前面的线程执行完成后.才开始执行后面的线程
 44 -(void)testSyncWithConcurrentQueue
 45 {
 46     //创建并行的队列
 47     dispatch_queue_t conQueue = dispatch_queue_create("conQueue", DISPATCH_QUEUE_CONCURRENT);
 48     
 49     //线程一
 50     dispatch_sync(conQueue, ^{
 51         for (int i=0; i<100; i++) {
 52             NSLog(@"线程一:%d",i);
 53         }
 54     });
 55     
 56     //线程二
 57     dispatch_sync(conQueue, ^{
 58         for (int i=0; i<100; i++) {
 59             NSLog(@"线程二:%d",i);
 60         }
 61     });
 62 }
 63 
 64 //3.异步方式向串行队列提交代码
 65 //前面的线程执行完成后,才开始执行后面的线程
 66 -(void)testAsyncWithSerialQueue
 67 {
 68     //创建串行队列
 69     dispatch_queue_t serialQueue = dispatch_queue_create("serialQueue", DISPATCH_QUEUE_SERIAL);
 70     
 71     //线程一
 72     dispatch_async(serialQueue, ^{
 73         for (int i=0; i<100; i++) {
 74             NSLog(@"线程一:%d",i);
 75         }
 76     });
 77     
 78     //线程二
 79     dispatch_async(serialQueue, ^{
 80         for (int i=0; i<100; i++) {
 81             NSLog(@"线程二:%d",i);
 82         }
 83     });
 84 }
 85 
 86 //3.异步方式向并行队列提交代码
 87 //前面的线程执行和后面的线程同时执行
 88 -(void)testAsyncWithConcurrentQueue
 89 {
 90     //创建并行队列
 91     dispatch_queue_t conQueue = dispatch_queue_create("conQueue", DISPATCH_QUEUE_CONCURRENT);
 92     
 93     //线程一
 94     dispatch_async(conQueue, ^{
 95         for (int i=0; i<100; i++) {
 96             NSLog(@"线程一:%d",i);
 97         }
 98     });
 99     
100     //线程二
101     dispatch_async(conQueue, ^{
102         for (int i=0; i<100; i++) {
103             NSLog(@"线程二:%d",i);
104         }
105     });
106 }
107 
108 - (void)didReceiveMemoryWarning {
109     [super didReceiveMemoryWarning];
110     // Dispose of any resources that can be recreated.
111 }
112 
113 @end

 

posted on 2015-09-07 15:06  Baymax01  阅读(217)  评论(0编辑  收藏  举报

导航