La parte asincrona di invio asincrono vs sincronizzazione è diversa da concomitante contro seriale. Async significa che la funzione ritorna immediatamente, sync significa che aspetterà finché il blocco non verrà eseguito. Poiché il thread principale/coda è seriale, le cose verranno eseguite in ordine - I credo che questo significa che dal momento che stai chiedendo di inviare async sullo stesso thread da cui stai effettuando la distribuzione, verrà restituito immediatamente, attendi fino alla fine del ciclo di esecuzione corrente e qualsiasi altra cosa nella coda, quindi esegui il blocco.
Questo è più utile all'interno di una coda rispetto al thread principale: è possibile elaborare i dati, consentire all'interfaccia utente di aggiornarsi e continuare l'elaborazione senza attendere che tutto si ridisegna, ecc. Ecco perché spesso viene visualizzata una chiamata dispatch_async al thread principale all'interno di un'altra dispatch_async (coda simultanea) anziché solo una dispatch_sync.
fonte
2012-05-11 20:24:39
Nota che se ti capita di farlo e ** SEI GIÀ ** sul thread principale, in effetti è ** QUITATO HARMLESS **. Questo è molto conveniente quando hai un codice di rete complesso! :) – Fattie