objective-c - raywenderlich - swift thread
Cree una cola de envĂo serial de alta prioridad con GCD (3)
¿Es un requisito que tengas una cola personalizada? De lo contrario, podría considerar enviar un bloque a la cola global de alta prioridad, que puede recuperar usando:
dispatch_queue_t q = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)
tenga en cuenta que esta es la cola global por lo que puede afectar a otras operaciones simultáneas.
¿Cómo puedo crear una cola serial personalizada que se ejecute con prioridad alta?
En este momento estoy usando myQueue = dispatch_queue_create("com.MyApp.MyQueue", NULL); ¿Pero esto no parece permitir establecer una prioridad?
Cree una cola en serie, luego use dispatch_set_target_queue() para establecer su cola de destino en la cola de alta prioridad.
Así es cómo:
dispatch_set_target_queue(myQueue, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0));
Ahora myQueue debe ejecutarse en serie con alta prioridad. Aquí hay otra respuesta SO si quieres saber más.
La función dispatch_queue_attr_make_with_qos_class puede ser nueva desde que se publicó la respuesta aceptada, pero algo como:
dispatch_queue_attr_t priorityAttribute = dispatch_queue_attr_make_with_qos_class(
DISPATCH_QUEUE_SERIAL, QOS_CLASS_USER_INITIATED, -1
);
myQueue = dispatch_queue_create("com.MyApp.MyQueue", priorityAttribute);
podría dar a la cola una alta prioridad (''calidad de servicio''). Hay una clase de QOS más alta, pero QOS_CLASS_USER_INITIATED es equivalente a DISPATCH_QUEUE_PRIORITY_HIGH .