class

X::Scheduler

Inherits Reference / Object

Constants

Log = ::Log.for(self)

Constructors

new(engine : Engine::Context)
Source

Instance methods

block_on_send(process : Process::Context)

Move process to blocked queue (mailbox full)

Source
check_blocked

Check if blocked processes can now send

Source
check_timeouts

Check and handle expired timeouts

Source
enqueue(process : Process::Context)

Add a new process to the scheduler

Source
has_work?

Check if any work remains

Source
make_runnable(process : Process::Context)

Move process to run queue

Source
mark_dead(process : Process::Context)

Mark process as dead and remove from all queues

Source
next_runnable

Get next process to run (O(1) for each priority level)

Source
notify_message_delivered(process : Process::Context, message : Message::Context)

Called when a message is delivered to a process

Source
stats

Stats for debugging

Source
wait_for_message(process : Process::Context, pattern : Value::Context | Nil = nil, timeout : Time::Span | Nil = nil)

Move process to wait queue (blocked on receive)

Source
yield_process(process : Process::Context)

Re-enqueue a process that yielded (hit reduction limit)

Source