ciorent
Version:
A lightweight, low-overhead concurrency library
1 lines • 394 B
JavaScript
export let init=()=>{let e=[null];let r=[e,e,e=>{r[0]=r[0][0]=[null,e]},false];return r};export let write=(e,r)=>{if(!e[3]){if(e[1][0]!==null){(e[1]=e[1][0])[1](r);return}e[3]=true}e[0]=e[0][0]=[null,r]};export let read=async e=>{if(e[3]){e[1]=e[1][0];if(e[1][0]===null)e[3]=false;return e[1][1]}return new Promise(e[2])};export let flush=e=>{if(!e[3])while(e[1][0]!==null)(e[1]=e[1][0])[1]()};