GCD理解1(同步-异步、串行-并行)

1、并行-异步(ST1与ST2抢占资源)

1-1)、获取 并行(全局)队列 ,DISPATCH_QUEUE_PRIORITY_DEFAULT 为默认优先级。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0);

1-2)、创建异步事件。

dispatch_async(queue, ^{

	//do something 1

   });

dispatch_async(queue, ^{

	//do something 2

   });

2、串行-同步(顺序执行)

2-1)、创建串行队列,DISPATCH_QUEUE_SERIAL 为串行

dispatch_queue_t queue =  dispatch_queue_create("test", DISPATCH_QUEUE_SERIAL);

2-2)、创建同步事件。

dispatch_sync(queue, ^{

	//do something 1

    });

dispatch_sync(queue, ^{

	//do something 2

   });

3、并行-同步(顺序执行)

3-1)、获取 并行(全局)队列 ,DISPATCH_QUEUE_PRIORITY_DEFAULT 为默认优先级。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0);

 3-2)、创建同步事件。

dispatch_sync(queue, ^{

	//do something 1

    });

dispatch_sync(queue, ^{

	//do something 2

   });

4、串行-异步(怪怪的,测试结果,顺序执行)

4-1)、创建串行队列,DISPATCH_QUEUE_SERIAL 为串行

dispatch_queue_t queue =  dispatch_queue_create("test", DISPATCH_QUEUE_SERIAL);

4-2)、创建异步事件。

dispatch_async(queue, ^{

	//do something 1

    });

dispatch_async(queue, ^{

	//do something 2

   });

一般1-3就够用了?!

相关推荐