Número de hilos creados por GCD?

¿Hay alguna buena documentation sobre cuántos hilos son creados por GCD? En WWDC, nos dijeron que está modelado alnetworkingedor de los núcleos de la CPU. Sin embargo, si llamo a este ejemplo:

for (int i=1; i<30000; i++) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [NSThread sleepForTimeInterval:100000]; }); } 

abre 66 subprocesss, incluso en un iPad1. (También abre 66 subprocesss cuando se llama a Lion de forma nativa). ¿Por qué 66?

Primero, 66 == 64 (el tamaño máximo del grupo de subprocesss GCD) + el subprocess principal + algún otro subprocess aleatorio que no sea GCD.

Segundo, el GCD no es mágico. Está optimizado para mantener la CPU ocupada con un código que está en su mayoría encriptado por la CPU. La "magia" de GCD es que crea dinámicamente más subprocesss que las CPU cuando los elementos de trabajo involuntariamente y brevemente esperan a que se completen las operaciones.

Dicho esto, el código puede confundir al planificador de GCD durmiendo intencionalmente o esperando events en lugar de usar fonts de despacho para esperar events. En estos escenarios, el bloque de trabajo está implementando efectivamente su propio planificador y, por lo tanto, GCD debe asumir que el hilo ha sido cooptado desde el grupo de hilos.

En resumen, el grupo de subprocesss funcionará de manera óptima si su código prefiere dispatch_after () sobre "sleep ()" como las API y las fonts de distribución a través de loops de events hechos a mano (Unix select () / poll (), Cocoa runloops o POSIX variables de condición) .

La documentation evita mencionar la cantidad de subprocesss creados. Sobre todo porque el número óptimo de subprocesss depende en gran medida del context.

Un problema con Grand Cendral Dispatch es que generará un nuevo hilo si una tarea en ejecución bloquea. Es decir, debe evitar el locking cuando se usa GCD ya que tiene más subprocesss que los núcleos.

En su caso, GCD detecta que la tarea está inactiva y genera un nuevo hilo para la próxima tarea.

Por qué 66 es el límite está más allá de mí.