GCD学习之——dispatch_set_target_queue

dispatch_set_target_queue
dispatch_queue_create函数生成的Dispatch Queue不管是Serial Dispatch Queue还是Concurrent Dispatch Queue,都使用与默认优先级Global Dispatch Queue 相同优先级的线程。而变更生成的Dispatch Queue的执行优先级要使用ispatch_set_target_queue函数。在后台执行动作处理的Serial Dispatch Queue的生成方法如下:

  dispatch_queue_t  mySerialDispatchQueue = dispatch_queue_create("com.example.gcd.MySerialDispatchQueue",NULL);

  dispatch_queue_t globalDispatchQueueBackground = dispatch_get_global_queue(DISPATCH_QUEUE_PRIOROTY_BACKGROUND,0);

  dispatch_set_target_queue(mySerialDispatchQueue,globalDispatchQueueBackground);  

指定要变更执行优先级的Dispatch Queue为dispatch_set_target_queue函数的第一个参数,指定与要使用的执行优先级相同的Global Dispatch Queue为第二个参数(目标)。第一个参数如果指定系统提供的Main Dispatch Queue和Global Dispatch Queue则不知道会出现什么状况,因此这些均不可指定。
将Dispatch Queue指定为dispatch_set_target_queue函数的参数,不仅可以变更Dispatch Queue的执行优先级,还可以作成Dispatch Queue的执行阶层。如果在多个Serial Dispatch Queue中用dispatch_set_target_queue函数指定目标为某一个Serial Dispatch Queue,那么原先本应并行执行的多个Serial Dispatch Queue,在目标Serial Dispatch Queue上只能同时执行一个处理。

你可能感兴趣的:(ios,线程,Concurrent,gcd)