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
.