Cocoaheads Madrid




             PROGRAMACIÓN MULTI-HILO
                   PARA IPHONE
                       Geppy Par...
Cocoaheads Madrid




                    La terminología de Cocoa

                       •   thread: un proceso unico de...
Cocoaheads Madrid




                                    Ventajas

                       •   Soporte de multiprocesador
...
Cocoaheads Madrid




                                   Desventajas

                    •   (Muy) difícil de programar!!...
Cocoaheads Madrid




                            NSThread


•       Se basa en el API multi-hilo POSIX API: /usr/include/...
Cocoaheads Madrid




                         Cocoa Touch


•       Un run-loop es instanciado automáticamente para cada ...
Cocoaheads Madrid




                       UIKit Thread-Unsafe



•       UIKit no es “thread-safe”

•       Tienes que ...
DEMO



www.invasivecode.com          info@invasivecode.com
Cocoaheads Madrid




                                            Lock
•       Es un mecanismo de sincronización

•       ...
Cocoaheads Madrid




                              Condiciones
•       Son un alternativa al “Lock”

•       Optima soluc...
Cocoaheads Madrid




                           Alternatives



•       Multi-hilos, locks y condiciones son muy difícil ...
Cocoaheads Madrid




                           NSOperation

•       Es una alternativa al multi-hilo de alto nivel

•   ...
Referencia


•   Threading Programming Guide, Apple Documentation

•   Advanced Mac OS X Programming, M. Dalrymple y A.
  ...
GRACIAS



www.invasivecode.com             info@invasivecode.com
Próxima SlideShare
Cargando en…5
×

Programación Multihilo

2.834 visualizaciones

Publicado el

Programación multihilo para Mac OS X e iPhone/iPod touch.

Publicado en: Tecnología, Viajes
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
2.834
En SlideShare
0
De insertados
0
Número de insertados
101
Acciones
Compartido
0
Descargas
10
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Programación Multihilo

  1. 1. Cocoaheads Madrid PROGRAMACIÓN MULTI-HILO PARA IPHONE Geppy Parziale www.invasivecode.com info@invasivecode.com
  2. 2. Cocoaheads Madrid La terminología de Cocoa • thread: un proceso unico de ejecución • process: un ejecutable que abarca hilos multiples • task: concepto abstracto del trabajo executado por parte de un hilo www.invasivecode.com info@invasivecode.com
  3. 3. Cocoaheads Madrid Ventajas • Soporte de multiprocesador • Efectuar más funciones en paralelo • Evitar funciones de bloque www.invasivecode.com info@invasivecode.com
  4. 4. Cocoaheads Madrid Desventajas • (Muy) difícil de programar!!! • Deadlocks y sincronización • No siempre multi-hilo significa “más rapido” www.invasivecode.com info@invasivecode.com
  5. 5. Cocoaheads Madrid NSThread • Se basa en el API multi-hilo POSIX API: /usr/include/pthread.h • Es una capa de alto nivel en el Foundation framework www.invasivecode.com info@invasivecode.com
  6. 6. Cocoaheads Madrid Cocoa Touch • Un run-loop es instanciado automáticamente para cada hilo • Existen métodos para la comunicación entre hilos • Necesitas crear un “autorelease pool” para cada hilo www.invasivecode.com info@invasivecode.com
  7. 7. Cocoaheads Madrid UIKit Thread-Unsafe • UIKit no es “thread-safe” • Tienes que solucionarlo tú mismo www.invasivecode.com info@invasivecode.com
  8. 8. DEMO www.invasivecode.com info@invasivecode.com
  9. 9. Cocoaheads Madrid Lock • Es un mecanismo de sincronización • Evita que diferentes hilos tengan acceso a los mismos datos • NSLock, NSConditionLock, NSRecursiveLock, NSLocking - (void)doSomething { [aLock lock]; ! // Solo un hilo por vez puede ejecutar este código ! [aLock unlock] } www.invasivecode.com info@invasivecode.com
  10. 10. Cocoaheads Madrid Condiciones • Son un alternativa al “Lock” • Optima solución en el caso de Productor/Consumidor • NSCondition // Hilo consumidor - (void)consumeData // Hilo productor { - (void)produceData ! [condition lock]; { ! while(!newDataExists) { ! [condition lock]; ! ! [condition wait]; ! // Nuevos datos producidos ! } ! newDataExists = YES; ! // Consuma los nuevos datos ! [condition signal]; ! newDataExists = NO; ! [condition unlock]; ! [condition unlock]; } } www.invasivecode.com info@invasivecode.com
  11. 11. Cocoaheads Madrid Alternatives • Multi-hilos, locks y condiciones son muy difícil de gestionar • Hay alternativas; Timers, Métodos Asíncronos, ... www.invasivecode.com info@invasivecode.com
  12. 12. Cocoaheads Madrid NSOperation • Es una alternativa al multi-hilo de alto nivel • Se basa en el concepto de “unidad de trabajo” • Te permite especificar las dependencias y las prioridades entre unidades • Te permite organizar las unidades en NSOperationQueue www.invasivecode.com info@invasivecode.com
  13. 13. Referencia • Threading Programming Guide, Apple Documentation • Advanced Mac OS X Programming, M. Dalrymple y A. Hillegass, Big Nerd Ranch www.invasivecode.com info@invasivecode.com
  14. 14. GRACIAS www.invasivecode.com info@invasivecode.com

×