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

Concurrencia en Crystal

Jan 11, 2017

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Concurrencia en Crystal

Buenos Aires - Crystal Meetup #1

Concurrencia En Crystal

Juan [email protected]

Page 2: Concurrencia en Crystal

Concurrencia vs

Paralelismo

Page 3: Concurrencia en Crystal

Estado Actual

❖ Un único thread

❖ Corutinas cooperativas (Fibers)

❖ Event Loop

❖ Canales de Mensajes (CSP)

Page 4: Concurrencia en Crystal

Un Proceso CrystalFiber

#1

Fiber#2

Fiber#3

Fiber#…

RuntimeScheduler

Event Loop

Archivos

Sockets

Pipes

Signals

Timers

Channels

GC

Page 5: Concurrencia en Crystal

Fibers

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

Fiber

Stack(8MB)

4KB

Page 6: Concurrencia en Crystal

Fibers

spawn do

# ...

end

Page 7: Concurrencia en Crystal

Event Loop

Event Loop Fiber

libevent

epoll, kqueue, etc…

Sistema Operativo

Page 8: Concurrencia en Crystal

Event Loop

spawn do

...

@socket.read(…)

...

end

spawn do

...

sleep 5

...

end

Page 9: Concurrencia en Crystal

Canales

❖ Permiten comunicar fibers sin compartir memoria

❖ Basados en CSP, similares a los canales de Go

❖ Dos tipos:

❖ Unbuffered

❖ Buffered

Page 10: Concurrencia en Crystal

DEMO

Page 11: Concurrencia en Crystal

Futuro

❖ Operador select para multiplexar operaciones en un mismo fiber

❖ Multithreading

❖ Loop fiber nativo (sin libevent)

Page 12: Concurrencia en Crystal

¡Gracias!

Juan Wajnerman

email: [email protected]

@wajtwitter: