tutorial part grand for dispatchqueue central async objective-c grand-central-dispatch dispatch-async

objective c - part - ¿Usar dispatch_get_main_queue() significa que mi código estará en el hilo principal?



grand central dispatch swift (3)

¿Se ejecuta el siguiente código en el hilo principal? ¿La "cola principal" se refiere al hilo principal?

dispatch_async(dispatch_get_main_queue(), ^{ // Some code });



La parte asíncrona de despacho asíncrono vs sincronización es diferente de concurrente frente a serie. Async significa que la función regresa inmediatamente, sync significa que esperará hasta que se ejecute el bloque. Dado que el subproceso principal / la cola es serial, las cosas se ejecutarán en orden. Creo que esto significa que, dado que está pidiendo que se realice un envío asíncrono en el mismo subproceso desde el que está enviando, volverá inmediatamente, espere hasta el final del ciclo de ejecución actual y cualquier otra cosa en la cola, y luego ejecute su bloque.

Esto es más útil para dentro de una cola que en el hilo principal: puede procesar sus datos, dejar que la interfaz de usuario sepa actualizar y continuar procesando sin esperar a que todo se vuelva a dibujar, etc. Es por eso que a menudo verá un dispatch_async llame al hilo principal dentro de otra dispatch_async (cola concurrente) en lugar de solo dispatch_sync.


Sí. Desde el sitio del desarrollador de Apple :

El marco de despacho proporciona una cola serial predeterminada para que la use la aplicación. Se accede a esta cola a través de dispatch_get_main_queue ().