SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
Modelos de
concurrencia
Erick Camacho @ecamacho
CTO Nubleer
The Free Lunch Is Over. A Fundamental Turn Toward
Concurrency in Software
Herb Sutter (Marzo 2005)
"Applications will increasingly need to be concurrent if they
want to fully exploit continuing exponential CPU throughput
gains"
- Herb Sutter
¿Qué es?
• Paralelismo: Ejecución simultánea de tareas.
• Concurrencia: Cuando dos o más tareas se
ejecutan de forma independiente en periodos de
tiempo traslapados.
¿Qué es?
• http://concurrencia-go.appspot.com/
go_sgce.slide#25
1. Procesos
• Tarea que utiliza el recurso de una computadora.
• Memoria, CPU, red, disco.
• Aislados
• Fork
1. Procesos
• Context - switching
• Multitasking
• Se comunican por RPC
• Costosos: ulimit -u > 709
2. Threads
• Componente de un proceso
• Múltiples threads por proceso
• Memoria compartida
• 2 mb en Linux
2. Threads
• La programación es compleja: semáforos, waits,
etc.
• Context switching más rápido que los procesos
• Más ligeros que los procesos
• Técnica común: Pool de threads
2. Threads
“Concurrency Options on the JVM” @jessitron
2. Threads
2. Threads
3. Reactor
• Event-loop
• 1 sólo thread
• Loop de eventos: Reactor va turnando la tarea a
ejecutar
• Descrito por Douglas Schmidt en 2000
3. Reactor
3. Reactor
Node.js event loop
3. Reactor
3. Reactor
3. Reactor
• Si una tarea se tarda mucho, afecta a las otras.
• Memoria compartida
• Fácil de entender
4. CSP (GO)
• Presentación
5. Erlang / OTP
Basado en el Actores:
1973: Carl Hewitt, Peter Bishop y Richard Steiger
• Procesos ligeros y aislados
• Share-nothing para evitar efectos colaterales
(Programación Funcional)
• Comunicación basada en paso de mensajes
• Location transparency
5. Erlang / OTP
• Un SO para gestionar procesos ligeros
• ~1.8k de heap inicial
• Una máquina virtual (BEAM)
• Un lenguaje: Erlang
• Un framework para sistemas concurrentes y
tolerantes a fallas: OTP
5. Erlang / OTP
• Procesos aislados (seguridad)
• Ligeros (puedes tener millones)
• Tolerante a fallos
• Monitores y alarmas
5. Erlang / OTP
5. Erlang / OTP
Supervisores
Workers
OTP App
5. Erlang - Elixir
• Creado por José Valim
• 1.0 liberada en septiembre
• Sintaxis más clara y familiar
• Macros!
• Protocolos
• Herramientas para automatizar builds y despliegues
5. Erlang - Elixir
parent = self()
# Spawns an Elixir process (not an operating system one!)
spawn_link(fn ->
send parent, {:msg, "hello world"}
end)
# Block until the message is received
receive do
{:msg, contents} -> IO.puts contents
end
5. Erlang(o Elixir)/OTP
6. Promises / Futures
• Promises: 1976 Daniel P. Friedman y David Wise
• Futures: 1977 Henry Baker y Carl Hewitt
6. Ejemplo: q
step1(function (value1) {
step2(value1, function(value2) {
step3(value2, function(value3) {
step4(value3, function(value4) {
// Do something with value4
});
});
});
});
6. Ejemplo: q
Q.fcall(promisedStep1)
.then(promisedStep2)
.then(promisedStep3)
.then(promisedStep4)
.then(function (value4) {
// Do something with value4
})
.catch(function (error) {
// Handle any error from all above steps
})
.done();
6. Promises / Futures
• Implementados en la mayoría de lenguajes: Java,
javascript, .NET, Scala, Clojure, Elixir, Ruby, Obj-c,
Swift.
• Dependen del modelo de concurrencia de la
plataforma.
6. Scala
scala> val something = Future { 10 + 6 }
something: scala.concurrent.Future[Int] =
scala.concurrent.impl.Promise$DefaultPromise@5535cbe
scala> Await.result(something, 0 nanos)
res1: Int = 16
6. Elixir
something = Task.async fn ->
...(1)> 10 + 6
...(1)> end
%Task{pid: #PID<0.44.0>, ref:
#Reference<0.0.0.55>}
iex(2)> Task.await(something)
16
Scala / Elixir
• Scala: modelo polling. Se crea un thread y
periodicamente se le pregunta si ya terminó
• Elixir: modelo push. Se crea un proceso
independiente que nos notifica cuando termina.
• Fuente: Peter Hamilton http://
undiscoveredfeatures.com/elixir-tasks-vs-scala-
futures/
Gracias
@ecamacho

Más contenido relacionado

La actualidad más candente

Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open sourcescrumecuador
 
Programas Y Procesos
Programas Y ProcesosProgramas Y Procesos
Programas Y ProcesosUNDP
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación DockerITPAMI
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoSergio Zambrano Delfa
 
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...Carlos Crisóstomo Vals
 
Task Parallel Library 2014
Task Parallel Library 2014Task Parallel Library 2014
Task Parallel Library 2014Lluis Franco
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosMicael Gallego
 
Programas y procesos de computación
Programas y procesos de computaciónProgramas y procesos de computación
Programas y procesos de computaciónCelso
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA_es
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a DockerOpen Canarias
 
Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP Aprende PHP
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015Micael Gallego
 

La actualidad más candente (20)

Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open source
 
DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Programas Y Procesos
Programas Y ProcesosProgramas Y Procesos
Programas Y Procesos
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Contenedores como Servicio con Docker
Contenedores como Servicio con DockerContenedores como Servicio con Docker
Contenedores como Servicio con Docker
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de uso
 
.NET Core
.NET Core.NET Core
.NET Core
 
Introduction to docker. Stratio
Introduction to docker. StratioIntroduction to docker. Stratio
Introduction to docker. Stratio
 
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
Workshop 1 - Introducción a los Microservicios y Contenedores (@TechHub - Goo...
 
Task Parallel Library 2014
Task Parallel Library 2014Task Parallel Library 2014
Task Parallel Library 2014
 
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallosTesteando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
 
todo sobre java
todo sobre javatodo sobre java
todo sobre java
 
Programas y procesos de computación
Programas y procesos de computaciónProgramas y procesos de computación
Programas y procesos de computación
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 

Destacado (20)

Cuestionarios3
Cuestionarios3Cuestionarios3
Cuestionarios3
 
Mujeres alrededor del fuego
Mujeres alrededor del fuegoMujeres alrededor del fuego
Mujeres alrededor del fuego
 
Ces las vegas 2011
Ces las vegas 2011Ces las vegas 2011
Ces las vegas 2011
 
Bea
BeaBea
Bea
 
Solo una vez
Solo una vezSolo una vez
Solo una vez
 
Cms
CmsCms
Cms
 
Educació Global
Educació GlobalEducació Global
Educació Global
 
Proyecto de Reciclaje
Proyecto de ReciclajeProyecto de Reciclaje
Proyecto de Reciclaje
 
Grupo 3 actividad 10
Grupo 3 actividad 10Grupo 3 actividad 10
Grupo 3 actividad 10
 
Presentación MADIS DE COLOMBIA
Presentación MADIS DE COLOMBIAPresentación MADIS DE COLOMBIA
Presentación MADIS DE COLOMBIA
 
Guía de los mas destacado AHA RCP
Guía de los mas destacado AHA  RCP Guía de los mas destacado AHA  RCP
Guía de los mas destacado AHA RCP
 
Trivial4
Trivial4Trivial4
Trivial4
 
Noticias Sahara Sep 2009
Noticias Sahara Sep 2009Noticias Sahara Sep 2009
Noticias Sahara Sep 2009
 
Aprenentatge cooperatiu: programa
Aprenentatge cooperatiu: programaAprenentatge cooperatiu: programa
Aprenentatge cooperatiu: programa
 
Viaje Extraordinario
Viaje ExtraordinarioViaje Extraordinario
Viaje Extraordinario
 
El ordenador feliz
El ordenador felizEl ordenador feliz
El ordenador feliz
 
De l'Aula d'Acollida al Grup Ordinari
De l'Aula d'Acollida al Grup OrdinariDe l'Aula d'Acollida al Grup Ordinari
De l'Aula d'Acollida al Grup Ordinari
 
Unidad II Radicación
Unidad II RadicaciónUnidad II Radicación
Unidad II Radicación
 
Rodrigo Gonzalez
Rodrigo GonzalezRodrigo Gonzalez
Rodrigo Gonzalez
 
Windows 2003 Server
Windows 2003 ServerWindows 2003 Server
Windows 2003 Server
 

Similar a Modelos de Concurrencia

Similar a Modelos de Concurrencia (20)

Uso de threads en C#
Uso de threads en C#Uso de threads en C#
Uso de threads en C#
 
Procesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas OperativosProcesos e Hilos en los Sistemas Operativos
Procesos e Hilos en los Sistemas Operativos
 
Kernel y shell tipos
Kernel y shell   tiposKernel y shell   tipos
Kernel y shell tipos
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativos
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativos
 
Hilo de ejecución
Hilo de ejecuciónHilo de ejecución
Hilo de ejecución
 
Sistemas operativos threads
Sistemas operativos   threadsSistemas operativos   threads
Sistemas operativos threads
 
Linux
LinuxLinux
Linux
 
Tunning Flex Apps
Tunning Flex AppsTunning Flex Apps
Tunning Flex Apps
 
Presentacion sistemas operativos
Presentacion sistemas operativosPresentacion sistemas operativos
Presentacion sistemas operativos
 
Presentacion sistemas operativos
Presentacion sistemas operativosPresentacion sistemas operativos
Presentacion sistemas operativos
 
Presentacion sistemas operativos
Presentacion sistemas operativosPresentacion sistemas operativos
Presentacion sistemas operativos
 
Sistemas Operativos (temas de clase)
Sistemas Operativos (temas de clase)Sistemas Operativos (temas de clase)
Sistemas Operativos (temas de clase)
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativos
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Procesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasProcesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o Hebras
 
Presentacion sistemas operativos
Presentacion sistemas operativosPresentacion sistemas operativos
Presentacion sistemas operativos
 
Atix23
Atix23Atix23
Atix23
 
Atix23
Atix23Atix23
Atix23
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 

Más de Erick Camacho

Desarrollo de apps para AppleWatch con Watchkit
Desarrollo de apps para AppleWatch con WatchkitDesarrollo de apps para AppleWatch con Watchkit
Desarrollo de apps para AppleWatch con WatchkitErick Camacho
 
Integrando Swift y Objective-C
Integrando Swift y Objective-CIntegrando Swift y Objective-C
Integrando Swift y Objective-CErick Camacho
 
Porque debes de renunciar a tu empleo y desarrollar para iOS
Porque debes de renunciar a tu empleo y desarrollar para iOSPorque debes de renunciar a tu empleo y desarrollar para iOS
Porque debes de renunciar a tu empleo y desarrollar para iOSErick Camacho
 
CocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitCocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitErick Camacho
 
Lo que no te han contado sobre el desarrollo para iPhone/iPad
Lo que no te han contado sobre el desarrollo para iPhone/iPadLo que no te han contado sobre el desarrollo para iPhone/iPad
Lo que no te han contado sobre el desarrollo para iPhone/iPadErick Camacho
 
Ecosistemas software para Flex
Ecosistemas software para FlexEcosistemas software para Flex
Ecosistemas software para FlexErick Camacho
 
Mejorando el País mediante Código
Mejorando el País mediante CódigoMejorando el País mediante Código
Mejorando el País mediante CódigoErick Camacho
 
Introducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBIntroducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBErick Camacho
 
Spring BlazeDS Integration + Flex 4
Spring BlazeDS Integration + Flex 4Spring BlazeDS Integration + Flex 4
Spring BlazeDS Integration + Flex 4Erick Camacho
 

Más de Erick Camacho (11)

Realm para iOS
Realm para iOSRealm para iOS
Realm para iOS
 
Desarrollo de apps para AppleWatch con Watchkit
Desarrollo de apps para AppleWatch con WatchkitDesarrollo de apps para AppleWatch con Watchkit
Desarrollo de apps para AppleWatch con Watchkit
 
Integrando Swift y Objective-C
Integrando Swift y Objective-CIntegrando Swift y Objective-C
Integrando Swift y Objective-C
 
Porque debes de renunciar a tu empleo y desarrollar para iOS
Porque debes de renunciar a tu empleo y desarrollar para iOSPorque debes de renunciar a tu empleo y desarrollar para iOS
Porque debes de renunciar a tu empleo y desarrollar para iOS
 
CocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKitCocoaHeads México: Introducción a CocoaTouch:UIKit
CocoaHeads México: Introducción a CocoaTouch:UIKit
 
Lo que no te han contado sobre el desarrollo para iPhone/iPad
Lo que no te han contado sobre el desarrollo para iPhone/iPadLo que no te han contado sobre el desarrollo para iPhone/iPad
Lo que no te han contado sobre el desarrollo para iPhone/iPad
 
Ecosistemas software para Flex
Ecosistemas software para FlexEcosistemas software para Flex
Ecosistemas software para Flex
 
Mejorando el País mediante Código
Mejorando el País mediante CódigoMejorando el País mediante Código
Mejorando el País mediante Código
 
Introducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBIntroducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDB
 
Spring BlazeDS Integration + Flex 4
Spring BlazeDS Integration + Flex 4Spring BlazeDS Integration + Flex 4
Spring BlazeDS Integration + Flex 4
 
Hands on Spring 2.5
Hands on Spring 2.5Hands on Spring 2.5
Hands on Spring 2.5
 

Último

Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
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
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
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
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
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
 
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
 
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
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
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
 
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
 
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
 
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
 

Último (16)

Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
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)
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.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
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
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
 
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
 
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
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
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
 
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
 
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
 
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
 

Modelos de Concurrencia

  • 2.
  • 3. The Free Lunch Is Over. A Fundamental Turn Toward Concurrency in Software Herb Sutter (Marzo 2005)
  • 4. "Applications will increasingly need to be concurrent if they want to fully exploit continuing exponential CPU throughput gains" - Herb Sutter
  • 5.
  • 6. ¿Qué es? • Paralelismo: Ejecución simultánea de tareas. • Concurrencia: Cuando dos o más tareas se ejecutan de forma independiente en periodos de tiempo traslapados.
  • 8. 1. Procesos • Tarea que utiliza el recurso de una computadora. • Memoria, CPU, red, disco. • Aislados • Fork
  • 9. 1. Procesos • Context - switching • Multitasking • Se comunican por RPC • Costosos: ulimit -u > 709
  • 10.
  • 11.
  • 12.
  • 13. 2. Threads • Componente de un proceso • Múltiples threads por proceso • Memoria compartida • 2 mb en Linux
  • 14. 2. Threads • La programación es compleja: semáforos, waits, etc. • Context switching más rápido que los procesos • Más ligeros que los procesos • Técnica común: Pool de threads
  • 15. 2. Threads “Concurrency Options on the JVM” @jessitron
  • 18. 3. Reactor • Event-loop • 1 sólo thread • Loop de eventos: Reactor va turnando la tarea a ejecutar • Descrito por Douglas Schmidt en 2000
  • 23. 3. Reactor • Si una tarea se tarda mucho, afecta a las otras. • Memoria compartida • Fácil de entender
  • 24. 4. CSP (GO) • Presentación
  • 25. 5. Erlang / OTP Basado en el Actores: 1973: Carl Hewitt, Peter Bishop y Richard Steiger • Procesos ligeros y aislados • Share-nothing para evitar efectos colaterales (Programación Funcional) • Comunicación basada en paso de mensajes • Location transparency
  • 26. 5. Erlang / OTP • Un SO para gestionar procesos ligeros • ~1.8k de heap inicial • Una máquina virtual (BEAM) • Un lenguaje: Erlang • Un framework para sistemas concurrentes y tolerantes a fallas: OTP
  • 27. 5. Erlang / OTP • Procesos aislados (seguridad) • Ligeros (puedes tener millones) • Tolerante a fallos • Monitores y alarmas
  • 28. 5. Erlang / OTP
  • 29. 5. Erlang / OTP Supervisores Workers OTP App
  • 30. 5. Erlang - Elixir • Creado por José Valim • 1.0 liberada en septiembre • Sintaxis más clara y familiar • Macros! • Protocolos • Herramientas para automatizar builds y despliegues
  • 31. 5. Erlang - Elixir parent = self() # Spawns an Elixir process (not an operating system one!) spawn_link(fn -> send parent, {:msg, "hello world"} end) # Block until the message is received receive do {:msg, contents} -> IO.puts contents end
  • 33.
  • 34. 6. Promises / Futures • Promises: 1976 Daniel P. Friedman y David Wise • Futures: 1977 Henry Baker y Carl Hewitt
  • 35. 6. Ejemplo: q step1(function (value1) { step2(value1, function(value2) { step3(value2, function(value3) { step4(value3, function(value4) { // Do something with value4 }); }); }); });
  • 36. 6. Ejemplo: q Q.fcall(promisedStep1) .then(promisedStep2) .then(promisedStep3) .then(promisedStep4) .then(function (value4) { // Do something with value4 }) .catch(function (error) { // Handle any error from all above steps }) .done();
  • 37. 6. Promises / Futures • Implementados en la mayoría de lenguajes: Java, javascript, .NET, Scala, Clojure, Elixir, Ruby, Obj-c, Swift. • Dependen del modelo de concurrencia de la plataforma.
  • 38. 6. Scala scala> val something = Future { 10 + 6 } something: scala.concurrent.Future[Int] = scala.concurrent.impl.Promise$DefaultPromise@5535cbe scala> Await.result(something, 0 nanos) res1: Int = 16
  • 39. 6. Elixir something = Task.async fn -> ...(1)> 10 + 6 ...(1)> end %Task{pid: #PID<0.44.0>, ref: #Reference<0.0.0.55>} iex(2)> Task.await(something) 16
  • 40. Scala / Elixir • Scala: modelo polling. Se crea un thread y periodicamente se le pregunta si ya terminó • Elixir: modelo push. Se crea un proceso independiente que nos notifica cuando termina. • Fuente: Peter Hamilton http:// undiscoveredfeatures.com/elixir-tasks-vs-scala- futures/