acaba de publicar en una respuesta diferente, pero aquí es algo que escribí hace un tiempo posterior:
La mejor manera de conceptualizar las colas es darse cuenta en primer lugar que en el bajo nivel muy, sólo hay dos tipos de colas: seriales y concurrentes.
Las colas en serie son monógamas, pero no están comprometidas. Si le da un montón de tareas a cada cola en serie, las ejecutará una a la vez, usando solo un hilo a la vez. El aspecto no confirmado es que las colas en serie pueden cambiar a un hilo diferente entre las tareas. Las colas en serie siempre esperan a que una tarea finalice antes de pasar a la siguiente. Por lo tanto, las tareas se completan en orden FIFO. Puede hacer tantas colas en serie como necesite con dispatch_queue_create
.
La cola principal es una cola serie especial. A diferencia de otras colas en serie, que no están comprometidas, dado que están "fechando" muchos hilos pero solo uno a la vez, la cola principal está "unida" al hilo principal y todas las tareas se realizan en él.Los trabajos en la cola principal deben comportarse bien con el runloop para que las operaciones pequeñas no bloqueen la IU y otros bits importantes. Al igual que todas las colas en serie, las tareas se completan en orden FIFO.
Si las colas en serie son monógamas, entonces las colas concurrentes son promiscuas. Presentarán tareas a cualquier hilo disponible o incluso crearán nuevos hilos dependiendo de la carga del sistema. Pueden realizar múltiples tareas simultáneamente en diferentes hilos. Es importante que las tareas enviadas a la cola global sean seguras para hilos y minimicen los efectos secundarios. Las tareas se envían para su ejecución en orden FIFO, pero el orden de finalización no está garantizado. Al escribir estas líneas, solo hay tres colas concurrentes y no puedes hacerlas, solo puedes buscarlas con dispatch_get_global_queue
.
edición: entrada de blog en la expansión de esta respuesta: http://amattn.com/p/grand_central_dispatch_gcd_summary_syntax_best_practices.html
Ya .. u recogió respuesta equivocada. La respuesta de Robert Ryan es más apropiada –