12
Buenos Aires - Crystal Meetup #1 Concurrencia En Crystal Juan Wajnerman [email protected]

Concurrencia en Crystal

Embed Size (px)

Citation preview

Buenos Aires - Crystal Meetup #1

Concurrencia En Crystal

Juan [email protected]

Concurrencia vs

Paralelismo

Estado Actual

❖ Un único thread

❖ Corutinas cooperativas (Fibers)

❖ Event Loop

❖ Canales de Mensajes (CSP)

Un Proceso CrystalFiber

#1

Fiber#2

Fiber#3

Fiber#…

RuntimeScheduler

Event Loop

Archivos

Sockets

Pipes

Signals

Timers

Channels

GC

Fibers

❖ Cooperativos ❖ Livianos (desde 4KB)❖ En 32 bit: máx. 512 fibers❖ En 64 bit: millones y millones...

Fiber

Stack(8MB)

4KB

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:

❖ Unbuffered

❖ Buffered

DEMO

Futuro

❖ Operador select para multiplexar operaciones en un mismo fiber

❖ Multithreading

❖ Loop fiber nativo (sin libevent)

¡Gracias!

Juan Wajnerman

email: [email protected]

@wajtwitter: