2009-07-27 23 views
5

Me dijeron que el iPhone no es compatible con multitarea y multihilo. Esto no tenía sentido para mí, así que probé en el simulador: pthreads funciona, fork() no. Este resultado tiene tiene sentido para mí, pero ahora no estoy seguro: ¿la biblioteca pthread también funcionará en el dispositivo real?iPhone: multitarea, multihilo?

Gracias.

+2

TEN EN CUENTA que esta pregunta es de WAY back; iOS 4.2 es compatible con algunos juegos de multitarea, aunque bifurcar no funcionará. – noamtm

Respuesta

10

Multithreading funcionará. Es multitarea que no lo hará. El iPhone no permitirá que se ejecute más de una aplicación de terceros a la vez. Ese razonamiento hace que tenedor vivir fuera de la zona de pruebas de la aplicación.

Puede crear subprocesos para encuestar sockets, leer archivos, manejar un reproductor de AI todo lo que quiera, o hasta que las ganancias de rendimiento comiencen a desaparecer.

1

Lo más probable.

La multitarea está deshabilitada de forma predeterminada para evitar que las aplicaciones generen una serie de procesos y ralenticen el iPhone o hagan cosas maliciosas.

La CPU de los iPhones realmente no es tan rápida, pero al ejecutar solo 1 programa a la vez, parece rápido. La multitarea introduciría muchos problemas generales y otros problemas que ralentizarían el iPhone.

No estoy seguro acerca del multihilo, pero como los hilos están contenidos en su propio proceso, parece probable que funcionen.

Y como dijiste, pthreads funcionan y fork() no, por lo que es lógico que funcione en el real también.

0

El subprocesamiento múltiple es muy posible: el iPhone realmente usa las mismas API de subprocesamiento Cocoa que están disponibles en la Mac. Escribo una aplicación de dibujo colaborativo que usa 6 hilos para manejar dibujo, comunicación de red, etc. Creo que crear demasiados hilos sería una mala idea, ya que el iPhone solo tiene un procesador. Sin embargo, ¡funcionan muy bien en mi experiencia!

3

Sí, la biblioteca pthread funcionará en el iPhone. Alternativamente, puede utilizar subprocesos nativos de cacao con NSThread. La multitarea no funcionará, ya que Apple está restringiendo explícitamente eso.