2009-09-19 18 views
10

¿Dónde puedo encontrar documentación sobre la cantidad máxima de subprocesos permitidos en una aplicación de iPhone y cuáles son sus experiencias con el rendimiento de subprocesos?Límite máximo de hilo?

¡Gracias!

Respuesta

23

This page on the Mac Dev Center da enhebrar los costos de asignación, que se puede hacer una suposición estimado a partir de:

1kb kernel costo
1mb espacio de pila en el iPhone
tiempo Creación 90 microsegundos

La guía sugiere que le pedirás al sistema operativo que asigne 50 MB de RAM a su aplicación si genera 50 hilos:

El espacio para esta memoria se ha puesto a un lado en su espacio de proceso al hilo momento de la creación, pero las páginas reales asociados a que la memoria no son crean hasta que se necesiten

Eso parece como una gran amount - y this blog post explica en detalle que si intentas usar más de 46 mb de ram, tu aplicación se congelará y luego será asesinada 5-10 segundos más tarde por el sistema operativo.

Así que realmente 15-20 hilos es una cantidad segura a la cual atenerse, pero por supuesto eso depende de la cantidad de memoria que cada hilo está consumiendo en las operaciones que realiza, y también qué tan rápido termina el hilo. La memoria se desasigna una vez que termina el hilo.

+0

Muy buenos detalles, ¡gracias! –

+0

Eso debería ser un signo "micro", no un m. ¡no son 90 milisegundos para comenzar un hilo! – Adam

+0

Se corrigió de MS a microsegundos –

3

Me temo que no te puedo indicar ningún documento relevante. Pero debes tener en cuenta que el iPhone es un dispositivo con recursos limitados, por lo que probablemente quieras ser bastante conservador con el desarrollo de nuevos hilos. Yo trataría de no pasar por un puñado de hilos por mi cuenta. Aún así, me gustaría saber cuál es el límite real.

+0

Gracias por sus comentarios. Si encuentro alguna recomendación sólida de una fuente confiable fuera de Stack Overflow (¿Apple?), Intentaré volver a publicarla. –

1

Mi experiencia es la siguiente: Mi aplicación creó 40 operaciones simultáneas, por cierto, el máximo de bytes en vivo fue de aproximadamente 8 mb en tiempo de ejecución ... Creo que realmente depende de qué tan eficientemente implemente sus hilos y cuánto consumen memoria en la ejecución y, por supuesto, la complejidad de sus tareas ... Use instrumentos para supervisar las asignaciones y el rendimiento de su aplicación.

Cuestiones relacionadas