SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette (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?
 

Similaire à 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
 

Similaire à 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
 

Dernier

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Dernier (15)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

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