Looking for ios Answers? Try Ask4KnowledgeBase
Looking for ios Keywords? Try Ask4Keywords

iOSConcurrencia


Introducción

Tema relacionado: Grand Central Dispatch

Sintaxis

  • dispatch_async: ejecuta un bloque de código en una cola separada y no detiene la cola actual. Si la cola está en un hilo diferente al que se llamó dispatch_async, el código en el bloque se ejecutará mientras que el código después de que dispatch_async también se ejecute
  • dispatch_sync - Se ejecuta un bloque de código en una cola separada, y se detiene la cola actual. Si la cola está en un subproceso diferente al que se llamó dispatch_async, el código en el bloque se ejecutará, y la ejecución en el subproceso donde se llamó el método solo se reanudará después de que finalice

Parámetros

cola La cola en la que se ejecutará el código en el bloque de envío. Una cola es como (pero no exactamente igual que) un hilo; El código en diferentes colas puede ejecutarse en paralelo. Use dispatch_get_main_queue para obtener la cola para el hilo principal Para crear una nueva cola, que a su vez crea un nuevo hilo, use dispatch_queue_create("QUEUE_NAME", DISPATCH_QUEUE_CONCURRENT) . El primer parámetro es el nombre de la cola, que se muestra en el depurador si hace una pausa mientras el bloque todavía se está ejecutando. El segundo parámetro no importa a menos que desee utilizar la misma cola para múltiples llamadas dispatch_async o dispatch_sync . Describe lo que sucede cuando otro bloque se coloca en la misma cola; DISPATCH_QUEUE_CONCURRENT hará que ambos bloques se ejecuten al mismo tiempo, mientras que DISPATCH_QUEUE_SERIAL hará que el segundo bloque espere a que finalice el primer bloque.
bloquear El código en este bloque se ejecutará en la cola de queue ; ponga el código que desea ejecutar en la cola separada aquí. Un consejo útil: si está escribiendo esto en Xcode y el argumento del bloque tiene el contorno azul a su alrededor, haga doble clic en el argumento y Xcode creará automáticamente un bloque vacío (esto se aplica a todos los argumentos del bloque en cualquier función o método)

Observaciones

Siempre que haga algo en un subproceso separado, lo que ocurre cuando se usan colas, es importante mantener la seguridad de los subprocesos. Es posible que algunos métodos, en particular los de UIView s, no funcionen y / o se bloqueen en hilos distintos al hilo principal. Además, asegúrese de no cambiar nada (variables, propiedades, etc.) que también se esté utilizando en el hilo principal, a menos que tenga en cuenta este cambio.

Concurrencia Ejemplos relacionados