Skip to main content

Crate kozan_scheduler

Crate kozan_scheduler 

Source
Expand description

kozan-scheduler — Task scheduler and async executor for Kozan.

Like Chrome’s base/task/ + blink/platform/scheduler/. Standalone crate — zero dependency on kozan-core.

§Architecture

Scheduler (MainThreadScheduler — the event loop)
├── TaskQueueManager (SequenceManager — priority picker)
│   └── TaskQueue × 6 (one per priority level)
├── MicrotaskQueue (drain after each macrotask)
├── LocalExecutor (!Send async runtime)
├── FrameScheduler (vsync-driven frame timing)
└── WakeReceiver (cross-thread task delivery)

§Event loop algorithm (HTML spec)

loop {
    1. Receive cross-thread tasks
    2. Promote delayed tasks
    3. Poll async executor
    4. Pick ONE macrotask → run
    5. Drain ALL microtasks
    6. If frame due → callbacks → style → layout → paint
    7. Park until next event
}

Re-exports§

pub use executor::LocalExecutor;
pub use executor::TaskId;
pub use frame::FrameInfo;
pub use frame::FrameScheduler;
pub use microtask::Microtask;
pub use microtask::MicrotaskQueue;
pub use queue::TaskQueue;
pub use queue::TaskQueueManager;
pub use scheduler::Scheduler;
pub use scheduler::TickResult;
pub use task::Task;
pub use task::TaskPriority;
pub use waker::CrossThreadTask;
pub use waker::SendError;
pub use waker::WakeReceiver;
pub use waker::WakeSender;
pub use waker::cross_thread_channel;

Modules§

executor
Local executor — single-threaded !Send async runtime.
frame
Frame scheduler — Chrome’s CCScheduler for vsync-driven rendering.
microtask
Microtask queue — HTML spec “perform a microtask checkpoint”.
queue
Task queues — Chrome’s base::sequence_manager::TaskQueue + SequenceManager.
scheduler
Scheduler — Chrome’s MainThreadScheduler, the event loop.
task
Task types — Chrome’s base::OnceClosure + base::TaskTraits.
timer
Timer registry — drives async sleep / deadline futures on the view thread.
waker
Cross-thread waker — wakes the window thread from background threads.

Structs§

FrameTiming
Pipeline timing breakdown for a single frame (milliseconds).