- Fast scalable performance
- Lightweight dependencies with minimal switching overhead
- Managed dependency memory
- Unlimited dependencies per job, allowing for complex graphs
- Fiber-aware mutexes that allow mid-execution interruption
- High level algorithms to abstract individual job creation and management
With the modern trend of increasing CPU cores, a highly scalable and low overhead automated work distribution system is a critical component of the backend for many real-time applications. While many of these already exist, few benefit from the power of user mode scheduling, which allows for minimal cost switching between jobs and full control over the task scheduling. This project was primarily created as a testbed to learn how to effectively operate with fibers to create a performance-focused scheduler.
Coming soon, Tracy profiler fiber support is a work-in-progress
Jobs uses premake as a project file generator.
To create your solution files, run the included premake5.exe
executable with the target project type as the first commandline argument, eg. vs2019
for Visual Studio 2019 project files. Open the generated solution/project files in the specified IDE and build the default project.
To create the makefiles, run the included premake5
executable with the target action being gmake2
. Then, run make
to compile the project.
When running the build script, the behavior can be modified via the options below.
--logging
Used to retrieve internal logs for debugging purposes, this will have signficant performance impacts.
--profiling
Creates additional projects for compiling Tracy and the included examples, enables the emission of Tracy zones for internal profiling. You must include a build of Tracy (including it's dependencies) in the project root directory, with it's premake build scripts.
Full examples of using this library can be found in the Examples/
directory.