Gears
A Julia package for scheduling tasks in simulation environments with precise timing control.
Quick Start
using Gears
# Schedule a task every 200ms
every(200ms) do dt
println("Task executed at $(now(global_clock()))")
end
# Run the scheduler for 1 second
for_next(1s) do
update!()
endFeatures
- Timed Jobs: Execute tasks at regular intervals
- ASAP Jobs: Execute tasks as soon as possible
- Event Jobs: Execute tasks when data arrives on channels
- Multiple Clocks: Machine time or controllable virtual time
- Flexible Scheduling: Global or custom schedulers
- Multi-threading: Parallel job execution
Documentation
Getting Started
- Quick Start - Get up and running in 5 minutes
Tutorials
- Tutorials - Step-by-step learning guide
- Basic Scheduling - Learn job scheduling fundamentals
- Clocks and Time - Understand time control
- Job Types - Explore different job triggers
- Schedulers - Configure job execution
- Threading - Run jobs in parallel
User Guide
- User Guide - Complete reference documentation
- API Reference - Function and type documentation
- Sharp Bits - Learn about sharp bits
Architecture
- Architecture - Implementation details and design
Index
Gears.MachineClockGears.TickedSchedulerGears.TickedSchedulerGears.TickerGears.TickerGears.TimedJobGears.TimedJobGears.VirtualClockGears.advance_time!Gears.advance_to!Gears.can_tickGears.consume_tick!Gears.global_clockGears.global_schedulerGears.nowGears.pause!Gears.progress!Gears.progress!Gears.progress!Gears.progress!Gears.reset!Gears.reset_global_clock!Gears.reset_global_scheduler!Gears.resume!Gears.schedule!Gears.schedule!Gears.schedule!Gears.set_global_clock!Gears.set_global_scheduler!Gears.set_time!Gears.update!Gears.update!Gears.update!