(sigil async)
(sigil async) - Cooperative Async Runtime
Provides a cooperative multitasking runtime with lightweight tasks, async I/O, and timer support. Tasks yield control explicitly via blocking operations (sleep, I/O waits, channel operations).
Basic Usage
(import (sigil async))
(with-async
(go (begin
(display "Task A\n")
(sleep 0.1)
(display "Task A done\n")))
(go (begin
(display "Task B\n")
(sleep 0.05)
(display "Task B done\n"))))I/O Integration
(with-async
(go (begin
(await-readable sock)
(display (socket-read sock)))))Exports
schedulerprocedureScheduler record type.
The scheduler manages concurrent tasks with support for I/O and timer-based waiting.
scheduler?procedureTest if a value is a scheduler struct.
scheduler-run-queueprocedureGet the run-queue field of a scheduler struct.
scheduler-blocked-countprocedureGet the blocked-count field of a scheduler struct.
scheduler-task-countprocedureGet the task-count field of a scheduler struct.
scheduler-io-waitersprocedureGet the io-waiters field of a scheduler struct.
scheduler-fd-waitersprocedureGet the fd-waiters field of a scheduler struct.
scheduler-timer-waitersprocedureGet the timer-waiters field of a scheduler struct.
set-scheduler-run-queue!procedureSet the run-queue field of a scheduler struct.
set-scheduler-blocked-count!procedureSet the blocked-count field of a scheduler struct.
set-scheduler-task-count!procedureSet the task-count field of a scheduler struct.
set-scheduler-io-waiters!procedureSet the io-waiters field of a scheduler struct.
set-scheduler-fd-waiters!procedureSet the fd-waiters field of a scheduler struct.
set-scheduler-timer-waiters!procedureSet the timer-waiters field of a scheduler struct.
make-schedulerprocedureCreate a new scheduler.
scheduler-spawnprocedureAdd a new task to the scheduler.
scheduler-runprocedureRun all scheduler tasks until completion or deadlock.
yieldprocedureYield control to the scheduler.
Allows other tasks to run before continuing.
await-readableprocedureWait until a socket is readable.
Yields to the scheduler until the socket has data available.
await-writableprocedureWait until a socket is writable.
Yields to the scheduler until the socket can accept data.
in-async-context?procedureCheck if currently running in an async context.
Returns #t if running inside with-async, #f otherwise. Useful for writing code that behaves differently in sync vs async contexts.
(if (in-async-context?)
(display "running async\n")
(display "running sync\n"))await-readable-fdprocedureWait until a file descriptor is readable.
Yields to the scheduler until the fd has data available. Use for non-blocking reads from process pipes.
await-writable-fdprocedureWait until a file descriptor is writable.
Yields to the scheduler until the fd can accept data. Use for non-blocking writes to process pipes.
current-schedulervariable(No description)
with-asyncvariable(No description)
%run-asyncvariable(No description)
govariable(No description)
%go-spawnvariable(No description)
sleepvariable(No description)
when-asyncvariable(No description)
if-asyncvariable(No description)
async-prompt-tagvariable(No description)
scheduler-enqueue!variable(No description)
scheduler-dec-blocked!variable(No description)