A multi-platform, fiber based job system based on a thread pool written in C and C++.
This project is authored by Frederik Omlor and may not be used for commercial or non-commercial purposes other than those specifically granted by the author. The project, aswell as all other public projects on the authors GitHub account, may be cloned and used for private uses as long as they are not published in any way.
NOTE: This project is currently work in progress and therefore only available for Windows platform!
To setup the project, create a build folder in this directory, navigate inside the folder and execute the command cmake ... This will setup the project for your respective platform.
Be aware that the library file (specifically the BorealisJobs.dll) will not be copied automatically. In order to execute the test project (see: BorealisJobsTest/src/main.cpp) you have to move/copy the library file manually next to the resulting executable!
Required CMake Version: 3.19 or newer.
TODO:
- Thread pool
- Fibers
- Jobs
- Spinlocks
- Scoped Spinlocks
- Use boost to make the project compatible for multiple platforms
- Upgrade the test project to use coorperative concurrency and yield to other jobs mid-job
- Add JobContext being handed to any job including the thread id, parameters, etc.
- Visualizing the jobs as graph / DAG
Currently, BorealisJobs has no external dependencies other than the Windows API (Win32).
The Windows API is used for the implementation of the fibers. In the future this will be replaced by the multi-platform implementation of boost.
All of this code (except the spinlock class) was written by Frederik Omlor but is inspired and influencd by multiple sources. No AI was used for writing this projects code.
The sources used for this project are listed below: