2011-04-08 9 views

Respuesta

7

Realmente no funciona de la manera que su pregunta lo implica. De forma predeterminada, hay una cola de distribución principal asociada con el hilo principal y tres colas globales (alta, predeterminada y baja prioridad, respectivamente) que son concurrentes.

Las colas concurrentes administran sus propios recursos de subprocesos, en lugar de asociarse con ningún subproceso en particular.

De hecho, se dice muy específicamente en la página del manual de dispatch_queue_create():

“colas no están vinculados a ningún hilo específico de ejecución y bloques presentados a las colas independientes pueden ejecutar al mismo tiempo.”

En cuanto a si puede usar semáforos de despacho fuera de las colas de despacho (la otra parte de su pregunta), la respuesta es sí, puede. Se implementan encima de los semáforos Mach y deberían funcionar en todas partes. Puede ver el código aquí:

http://opensource.apple.com/source/libdispatch/libdispatch-84.5.5/src/semaphore.c

Cuestiones relacionadas