Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Buenos Aires - Crystal Meetup #1
Concurrencia
En Crystal
Juan Wajnerman
jwajnerman@manas.com.ar
Concurrencia
vs
Paralelismo
Estado Actual
❖ Un único thread
❖ Corutinas cooperativas (Fibers)
❖ Event Loop
❖ Canales de Mensajes (CSP)
Un Proceso Crystal
Fiber
#1
Fiber
#2
Fiber
#3
Fiber
#…
Runtime
Scheduler
Event Loop
Archivos
Sockets
Pipes
Signals
Timers
...
Fibers
❖ Cooperativos
❖ Livianos (desde 4KB)
❖ En 32 bit: máx. 512 fibers
❖ En 64 bit: millones y millones...
Fiber
Stack
(...
Fibers
spawn do
# ...
end
Event Loop
Event Loop Fiber
libevent
epoll, kqueue, etc…
Sistema Operativo
Event Loop
spawn do
...
@socket.read(…)
...
end
spawn do
...
sleep 5
...
end
Canales
❖ Permiten comunicar fibers sin compartir memoria
❖ Basados en CSP, similares a los canales de Go
❖ Dos tipos:
❖ Un...
DEMO
Futuro
❖ Operador select para multiplexar operaciones en un
mismo fiber
❖ Multithreading
❖ Loop fiber nativo (sin libevent)
¡Gracias!
Juan Wajnerman
email: jwajnerman@manas.com.ar
@wajtwitter:
Upcoming SlideShare
Loading in …5
×

Concurrencia en Crystal

1,276 views

Published on

Juan Wajnerman habla sobre la concurrencia en el lenguaje Crystal.

Published in: Technology
  • Be the first to comment

Concurrencia en Crystal

  1. 1. Buenos Aires - Crystal Meetup #1 Concurrencia En Crystal Juan Wajnerman jwajnerman@manas.com.ar
  2. 2. Concurrencia vs Paralelismo
  3. 3. Estado Actual ❖ Un único thread ❖ Corutinas cooperativas (Fibers) ❖ Event Loop ❖ Canales de Mensajes (CSP)
  4. 4. Un Proceso Crystal Fiber #1 Fiber #2 Fiber #3 Fiber #… Runtime Scheduler Event Loop Archivos Sockets Pipes Signals Timers Channels GC
  5. 5. Fibers ❖ Cooperativos ❖ Livianos (desde 4KB) ❖ En 32 bit: máx. 512 fibers ❖ En 64 bit: millones y millones... Fiber Stack (8MB) 4KB
  6. 6. Fibers spawn do # ... end
  7. 7. Event Loop Event Loop Fiber libevent epoll, kqueue, etc… Sistema Operativo
  8. 8. Event Loop spawn do ... @socket.read(…) ... end spawn do ... sleep 5 ... end
  9. 9. Canales ❖ Permiten comunicar fibers sin compartir memoria ❖ Basados en CSP, similares a los canales de Go ❖ Dos tipos: ❖ Unbuffered ❖ Buffered
  10. 10. DEMO
  11. 11. Futuro ❖ Operador select para multiplexar operaciones en un mismo fiber ❖ Multithreading ❖ Loop fiber nativo (sin libevent)
  12. 12. ¡Gracias! Juan Wajnerman email: jwajnerman@manas.com.ar @wajtwitter:

×