Pular para o conteúdo

O runtime

O laço de eventos, as fibras e o executor: muita espera numa thread só.

Arcane.Laco é um reator: uma thread dormindo no selectors do sistema até haver algo a fazer — um soquete pronto, um prazo vencido, uma tarefa na fila. É a forma de atender mil conexões com uma thread, em vez de mil.

dataforge
adopt Arcane.Laco as L

laco := L.novo()
ordem := []
L.apos(laco, 20, lambda => ordem.append("depois"))
L.agendar(laco, lambda => ordem.append("agora"))
L.apos(laco, 40, lambda => L.parar(laco))
L.rodar(laco)
assert ordem is ["agora", "depois"]
PeçaFaz
o laçoa fila de prontas, a fila de prazos e o seletor de E/S
as fibrasstream action que cede o controle em cada emit
o canalfibras que conversam sem trava
o executoro trabalho que bloqueia vai para um pool, e o resultado volta pela fila

Por onde seguir#