Escribir código para iDevices de doble núcleo

Tengo algunas dudas al escribir código para dispositivos multinúcleo. Inicialmente, hasta el iPhone 3GS, el iPhone tenía una CPU de un solo núcleo. Entonces, cuando hice la aplicación para 3GS y si estaba escribiendo código en varios subprocesos, si ejecuto la aplicación en iPhone 4 o iPad 2 (doble núcleo), ¿IOS asigna estos múltiples subprocesos a diferentes núcleos? ¿O hay algo que hacer desde el lado de los desarrolladores para aprovechar los beneficios de las características de la CPU multinúcleo? ¿Es esta la responsabilidad de iOS para asignar diferentes subprocesos a diferentes núcleos? Y también supongamos que hay una función que tarda mucho tiempo en ejecutarse, y estoy llamando a este código en el subproceso actual (no se crearon múltiples subprocesos) ¿iOS divide la tarea grande en dos más pequeñas y se ejecuta en diferentes núcleos?

preguntado el 28 de julio de 12 a las 16:07

1 Respuestas

Si escribe su código utilizando las primitivas de subprocesos, el sistema operativo se encargará automáticamente de la gestión del núcleo.

Además, si usa GCD, optimizará la gestión del núcleo y de los subprocesos por usted.

En pocas palabras, use GCD (ya sea directamente o a través de ayudantes como NSOperationQueue), y el sistema ajustará automáticamente el acceso a los recursos de CPU del sistema, ya sea que esté en una arquitectura de CPU única o múltiple.

Respondido 28 Jul 12, 16:07

¡Exactamente! O use NSOperations: tanto GCD como NSOperationQueues trabajan en estrecha colaboración con el kernel para optimizar la cantidad de subprocesos, reutilizar subprocesos, etc. David H

Gracias por tu respuesta. Entonces, cuando acabo de hacer [NSthread detachFromMainThread:]; en un dispositivo multinúcleo, iOS ejecutará el subproceso principal en un núcleo y el nuevo subproceso en otro núcleo, ¿no es así? - RakeshNS

Lo bueno de las opciones anteriores es que no tiene que preocuparse mucho por los subprocesos, separarlos, etc. Simplemente inicie las operaciones y el sistema operativo manejará los subprocesos por usted. Sin embargo, asegúrese de llamar a cualquier actualización de la interfaz de usuario en mainThread. - enloquecido

Sí, puede obtener una operación multinúcleo usando NSThread directamente. Sin embargo, no recomiendo usar NSThread directamente. Utilice los mecanismos basados ​​en GCD, ya que hará un mejor trabajo de gestión de recursos que usted (o yo). - jody hagins

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.