Single-thread-driven, fixed-capacity scheduler for stackless run-to-completion jobs. More...
#include <Fibers.h>
Public Member Functions | |
| FiberJobScheduler (const FiberJobScheduler &)=delete | |
| FiberJobScheduler & | operator= (const FiberJobScheduler &)=delete |
| Result | create (Span< FiberJob * > readyStorage) |
| Result | close () |
| Result | spawn (FiberJob &job, FiberJob::Procedure procedure) |
| Result | spawn (FiberJob &job, FiberJob::Procedure procedure, FiberCancellationToken token) |
| Result | runOne (bool &outRanJob) |
| Result | run () |
| Result | shutdown () |
| Result | requestCancel (FiberJob &job) |
| Result | requestCancel (FiberCancellationTokenSource &tokenSource) |
| Result | requestCancelAll () |
| bool | isOpen () const |
| bool | hasReadyJobs () const |
| bool | hasActiveJobs () const |
| size_t | capacity () const |
| size_t | readyJobCount () const |
| size_t | activeJobCount () const |
| FiberJob * | currentJob () |
Single-thread-driven, fixed-capacity scheduler for stackless run-to-completion jobs.
This first concrete scheduler intentionally does not create worker threads. Calls must not overlap across threads. A later worker-pool topology can build on the same FiberJob state and ownership contract without adding stacks.