La parte asincrónica del envío async vs sync es diferente a la concurrente vs serie. Async significa que la función vuelve inmediatamente, sync significa que esperará hasta que se ejecute el bloque. Dado que el hilo/cola principal es serial, las cosas se ejecutarán en orden - I crea esto significa que, dado que estás pidiendo que asincréis el envío en el mismo hilo desde el que envías, volverá inmediatamente, espere hasta el final del bucle de ejecución actual y cualquier otra cosa en la cola, y luego ejecute su bloqueo.
Esto es más útil dentro de una cola que en el hilo principal: puede procesar sus datos, dejar que la UI sepa que debe actualizarse, y continuar procesando sin tener que volver a dibujar todo, etc. Es por eso que a menudo ven una llamada dispatch_async al hilo principal dentro de otro dispatch_async (cola simultánea) en lugar de solo un dispatch_sync.
Tenga en cuenta que si lo hace y ** YA ESTÁ ** en el hilo principal, de hecho es ** MUY INÚTIL **. ¡Esto es muy conveniente cuando tienes un código de red complejo! :) – Fattie