aboutsummaryrefslogtreecommitdiff
path: root/lib/executor.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/executor.h')
-rw-r--r--lib/executor.h16
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: