SlideShare una empresa de Scribd logo
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

Hilos En Java
Hilos En JavaHilos En Java
Java Threads (Hilos en Java)
Java Threads (Hilos en Java)Java Threads (Hilos en Java)
Java Threads (Hilos en Java)
José Guillermo Cemé Canul
 
Java multi threading
Java multi threadingJava multi threading
Java multi threading
Raja Sekhar
 
B to b es
B to b esB to b es
B to b es
Dizz Design
 
Mex Gto Cal Segunda Presentación
Mex Gto Cal Segunda PresentaciónMex Gto Cal Segunda Presentación
Mex Gto Cal Segunda Presentación
Ulises Ismael Perales Avila
 
Equilibrio entre mente y cuerpo
Equilibrio entre mente y cuerpoEquilibrio entre mente y cuerpo
Equilibrio entre mente y cuerpo
Calidad de vida
 
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
Francisco Manuel Rangel Pardo
 
SYRI
SYRISYRI
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
nidree
 
Romanticismo
RomanticismoRomanticismo
Romanticismo
gueste2dbd48
 
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
Centro de Conciliación Extrajudicial H&S
 
PresentacióN ExposicióN G3[2]
PresentacióN ExposicióN G3[2]PresentacióN ExposicióN G3[2]
PresentacióN ExposicióN G3[2]
Andromedagrupob
 
Capitulo 4
Capitulo 4Capitulo 4
Capitulo 4
edgar ivan
 
Acuitec l2 final
Acuitec l2 finalAcuitec l2 final
Acuitec l2 final
Luis Romero
 
E:\PresentacióN1 Ppt
E:\PresentacióN1 PptE:\PresentacióN1 Ppt
E:\PresentacióN1 Ppt
juanillo2010
 
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...
Opus Dei
 
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.
Jose Javier Martínez García
 
Cornea1
Cornea1Cornea1
Cornea1
Tomas Almonte
 
Documental
DocumentalDocumental
¿Qué es Nubelo?
¿Qué es Nubelo?¿Qué es Nubelo?
¿Qué es Nubelo?
PolFisas
 

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

Javascript
JavascriptJavascript
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
Ricard Clau
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
Giuseppe Maxia
 
programacion concurrente java.pptx
programacion concurrente java.pptxprogramacion concurrente java.pptx
programacion concurrente java.pptx
juan gonzalez
 
Open source malware analysis
Open source malware analysisOpen source malware analysis
Open source malware analysis
S21Sec
 
Inseguridad wireless-sfd- final
Inseguridad wireless-sfd- finalInseguridad wireless-sfd- final
Inseguridad wireless-sfd- final
sp1b0t
 
Transforma tu Monolito con HMVC
Transforma tu Monolito con HMVCTransforma tu Monolito con HMVC
Transforma tu Monolito con HMVC
Ortus Solutions, Corp
 
Jdbc
JdbcJdbc
1 fundamentos java
1 fundamentos java1 fundamentos java
1 fundamentos java
ayreonmx
 
Swift migration. the true history
Swift migration. the true historySwift migration. the true history
Swift migration. the true history
idealistacreamcode
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform framework
Mario IC
 
Manual de javapre
Manual de javapreManual de javapre
Manual de javapre
jtk1
 
Programar java 2pre
Programar java 2preProgramar java 2pre
Programar java 2pre
jtk1
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
Erasmo Domínguez Jiménez
 
Organizando un datacenter virtual
Organizando un datacenter virtualOrganizando un datacenter virtual
Organizando un datacenter virtual
Ignacio Nin
 
Pentest - El Arte de la Guerra
Pentest - El Arte de la GuerraPentest - El Arte de la Guerra
Pentest - El Arte de la Guerra
Luis 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 Moderno
wpargentina
 
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
Hacking Bolivia
 
Introducción a Javascript I
Introducción a Javascript IIntroducción a Javascript I
Introducción a Javascript I
Héctor Estigarribia
 
Conociendo Griffon a Fondo
Conociendo Griffon a FondoConociendo Griffon a Fondo
Conociendo Griffon a Fondo
Andres 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

Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
NicandroMartinez2
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
AMADO SALVADOR
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
evelinglilibethpeafi
 
IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
Miguel Rebollo
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
bendezuperezjimena
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
YaniEscobar2
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
larapalaciosmonzon28
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
paulroyal74
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
sofiahuarancabellido
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
AMADO SALVADOR
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
NajwaNimri1
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
MiguelAtencio10
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Festibity
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
AMADO SALVADOR
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
mantenimientocarbra6
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
JuanaNT7
 

Último (20)

Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
Refrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y ForzadoRefrigeradores Samsung Modo Test y Forzado
Refrigeradores Samsung Modo Test y Forzado
 
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
Catalogo General Electrodomesticos Teka Distribuidor Oficial Amado Salvador V...
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
 
IA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticulturaIA en entornos rurales aplicada a la viticultura
IA en entornos rurales aplicada a la viticultura
 
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
TODO SOBRE LA INFORMÁTICA, HISTORIA, ¿QUE ES?, IMPORTANCIA Y CARACTERISTICAS....
 
computacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADOcomputacion global 3.pdf pARA TERCER GRADO
computacion global 3.pdf pARA TERCER GRADO
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
Presentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre bloggerPresentación de Tic en educación y sobre blogger
Presentación de Tic en educación y sobre blogger
 
Sitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajasSitios web 3.0 funciones ventajas y desventajas
Sitios web 3.0 funciones ventajas y desventajas
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
 
mantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptxmantenimiento de chasis y carroceria1.pptx
mantenimiento de chasis y carroceria1.pptx
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
 
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaCatalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador Valencia
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
Manual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computoManual Web soporte y mantenimiento de equipo de computo
Manual Web soporte y mantenimiento de equipo de computo
 
Gabinete, puertos y dispositivos que se conectan al case
Gabinete,  puertos y  dispositivos que se conectan al caseGabinete,  puertos y  dispositivos que se conectan al case
Gabinete, puertos y dispositivos que se conectan al case
 

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