SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
Cocoaheads Madrid




             PROGRAMACIÓN MULTI-HILO
                   PARA IPHONE
                       Geppy Parziale




www.invasivecode.com                    info@invasivecode.com
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
Cocoaheads Madrid




                                    Ventajas

                       •   Soporte de multiprocesador

                       •   Efectuar más funciones en paralelo

                       •   Evitar funciones de bloque




www.invasivecode.com                                            info@invasivecode.com
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
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
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
Cocoaheads Madrid




                       UIKit Thread-Unsafe



•       UIKit no es “thread-safe”

•       Tienes que solucionarlo tú mismo




www.invasivecode.com                         info@invasivecode.com
DEMO



www.invasivecode.com          info@invasivecode.com
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
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
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
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
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
GRACIAS



www.invasivecode.com             info@invasivecode.com

Más contenido relacionado

Destacado (20)

Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Java Threads (Hilos en Java)
Java Threads (Hilos en Java)Java Threads (Hilos en Java)
Java Threads (Hilos en Java)
 
Java multi threading
Java multi threadingJava multi threading
Java multi threading
 
B to b es
B to b esB to b es
B to b es
 
Mex Gto Cal Segunda Presentación
Mex Gto Cal Segunda PresentaciónMex Gto Cal Segunda Presentación
Mex Gto Cal Segunda Presentación
 
Equilibrio entre mente y cuerpo
Equilibrio entre mente y cuerpoEquilibrio entre mente y cuerpo
Equilibrio entre mente y cuerpo
 
El uso del lenguaje en los diferentes canales de Internet
El uso del lenguaje en los diferentes canales de InternetEl uso del lenguaje en los diferentes canales de Internet
El uso del lenguaje en los diferentes canales de Internet
 
SYRI
SYRISYRI
SYRI
 
Aproximación a el quijote en la wiki
Aproximación a el quijote en la wikiAproximación a el quijote en la wiki
Aproximación a el quijote en la wiki
 
Romanticismo
RomanticismoRomanticismo
Romanticismo
 
El pago y conformidad de cumplimiento del contrato
El pago y conformidad de cumplimiento del contratoEl pago y conformidad de cumplimiento del contrato
El pago y conformidad de cumplimiento del contrato
 
PresentacióN ExposicióN G3[2]
PresentacióN ExposicióN G3[2]PresentacióN ExposicióN G3[2]
PresentacióN ExposicióN G3[2]
 
Capitulo 4
Capitulo 4Capitulo 4
Capitulo 4
 
Acuitec l2 final
Acuitec l2 finalAcuitec l2 final
Acuitec l2 final
 
E:\PresentacióN1 Ppt
E:\PresentacióN1 PptE:\PresentacióN1 Ppt
E:\PresentacióN1 Ppt
 
Montefalco, una iniciativa pionera para la promoción de la mujer en el ámbito...
Montefalco, una iniciativa pionera para la promoción de la mujer en el ámbito...Montefalco, una iniciativa pionera para la promoción de la mujer en el ámbito...
Montefalco, una iniciativa pionera para la promoción de la mujer en el ámbito...
 
Apuntes condición física 3º e.so.
Apuntes condición física 3º e.so.Apuntes condición física 3º e.so.
Apuntes condición física 3º e.so.
 
Cornea1
Cornea1Cornea1
Cornea1
 
Documental
DocumentalDocumental
Documental
 
¿Qué es Nubelo?
¿Qué es Nubelo?¿Qué es Nubelo?
¿Qué es Nubelo?
 

Similar a Programación Multihilo

Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
 
programacion concurrente java.pptx
programacion concurrente java.pptxprogramacion concurrente java.pptx
programacion concurrente java.pptxjuan gonzalez
 
Open source malware analysis
Open source malware analysisOpen source malware analysis
Open source malware analysisS21Sec
 
Inseguridad wireless-sfd- final
Inseguridad wireless-sfd- finalInseguridad wireless-sfd- final
Inseguridad wireless-sfd- finalsp1b0t
 
1 fundamentos java
1 fundamentos java1 fundamentos java
1 fundamentos javaayreonmx
 
Swift migration. the true history
Swift migration. the true historySwift migration. the true history
Swift migration. the true historyidealistacreamcode
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkMario IC
 
Manual de javapre
Manual de javapreManual de javapre
Manual de javaprejtk1
 
Programar java 2pre
Programar java 2preProgramar java 2pre
Programar java 2prejtk1
 
Organizando un datacenter virtual
Organizando un datacenter virtualOrganizando un datacenter virtual
Organizando un datacenter virtualIgnacio Nin
 
Pentest - El Arte de la Guerra
Pentest - El Arte de la GuerraPentest - El Arte de la Guerra
Pentest - El Arte de la GuerraLuis Cortes Zavala
 
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Modernowpargentina
 
Conferencia Innovación en Técnicas de Ethical Hacking
Conferencia Innovación en Técnicas de Ethical HackingConferencia Innovación en Técnicas de Ethical Hacking
Conferencia Innovación en Técnicas de Ethical HackingHacking Bolivia
 
Conociendo Griffon a Fondo
Conociendo Griffon a FondoConociendo Griffon a Fondo
Conociendo Griffon a FondoAndres Almiray
 

Similar a Programación Multihilo (20)

Javascript
JavascriptJavascript
Javascript
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
 
programacion concurrente java.pptx
programacion concurrente java.pptxprogramacion concurrente java.pptx
programacion concurrente java.pptx
 
Open source malware analysis
Open source malware analysisOpen source malware analysis
Open source malware analysis
 
Inseguridad wireless-sfd- final
Inseguridad wireless-sfd- finalInseguridad wireless-sfd- final
Inseguridad wireless-sfd- final
 
Transforma tu Monolito con HMVC
Transforma tu Monolito con HMVCTransforma tu Monolito con HMVC
Transforma tu Monolito con HMVC
 
Jdbc
JdbcJdbc
Jdbc
 
1 fundamentos java
1 fundamentos java1 fundamentos java
1 fundamentos java
 
Swift migration. the true history
Swift migration. the true historySwift migration. the true history
Swift migration. the true history
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform framework
 
Manual de javapre
Manual de javapreManual de javapre
Manual de javapre
 
Programar java 2pre
Programar java 2preProgramar java 2pre
Programar java 2pre
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Organizando un datacenter virtual
Organizando un datacenter virtualOrganizando un datacenter virtual
Organizando un datacenter virtual
 
Pentest - El Arte de la Guerra
Pentest - El Arte de la GuerraPentest - El Arte de la Guerra
Pentest - El Arte de la Guerra
 
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
03 de Marzo 2015: Andrés Villarreal - Herramientas del Desarrollador Moderno
 
Conferencia Innovación en Técnicas de Ethical Hacking
Conferencia Innovación en Técnicas de Ethical HackingConferencia Innovación en Técnicas de Ethical Hacking
Conferencia Innovación en Técnicas de Ethical Hacking
 
Introducción a Javascript I
Introducción a Javascript IIntroducción a Javascript I
Introducción a Javascript I
 
Conociendo Griffon a Fondo
Conociendo Griffon a FondoConociendo Griffon a Fondo
Conociendo Griffon a Fondo
 

Último

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 

Último (10)

Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

Programación Multihilo

  • 1. Cocoaheads Madrid PROGRAMACIÓN MULTI-HILO PARA IPHONE Geppy Parziale www.invasivecode.com info@invasivecode.com
  • 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. Cocoaheads Madrid Ventajas • Soporte de multiprocesador • Efectuar más funciones en paralelo • Evitar funciones de bloque www.invasivecode.com info@invasivecode.com
  • 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. 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. 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. Cocoaheads Madrid UIKit Thread-Unsafe • UIKit no es “thread-safe” • Tienes que solucionarlo tú mismo www.invasivecode.com info@invasivecode.com
  • 8. DEMO www.invasivecode.com info@invasivecode.com
  • 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. 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. 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. 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. 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. GRACIAS www.invasivecode.com info@invasivecode.com