diff options
Diffstat (limited to 'lib/executor.h')
-rw-r--r-- | lib/executor.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/executor.h b/lib/executor.h index f04f3f1..0f2eca9 100644 --- a/lib/executor.h +++ b/lib/executor.h @@ -8,16 +8,26 @@ #include <memory> namespace nMatcha { + // Cooperative user thread scheduler. + // + // The executor is responsible to schedule the next user thread after one + // thread yielded, as long as there are user threads that didn't finish. + // + // When a `Thread` instance is spawned on an `Executor`, its ownership is + // transfered to the executor. + // struct Executor { Executor(const Executor&) = delete; Executor& operator=(const Executor&) = delete; Executor() = default; - const void* getStackPtr() const { - return mStackPtr; - } + const void* getStackPtr() const; + // Spawn an user thread on the executor. void spawn(std::unique_ptr<Thread> t); + + // Run the executor until all user threads are finished. + // This example executor implements round robin scheduling. void run(); private: |