aboutsummaryrefslogtreecommitdiff
path: root/example/test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'example/test.cc')
-rw-r--r--example/test.cc25
1 files changed, 17 insertions, 8 deletions
diff --git a/example/test.cc b/example/test.cc
index b436708..1a40958 100644
--- a/example/test.cc
+++ b/example/test.cc
@@ -1,21 +1,30 @@
#include "lib/matcha.h"
-#include <cassert>
#include <cstdio>
+#include <memory>
+
+struct TestThread : public Thread {
+ TestThread(const char* name) : Thread(), mName(name) {}
-struct Thread1 : public Thread {
virtual void threadFn() override {
- puts("start threadFn -> yield()");
+ printf("[%s] starting up TestThread -> yield()\n", mName);
yield();
- puts("return from yield() -> finish threadFn");
+ printf("[%s] yield() -> finishing TestThreads\n", mName);
}
-} gThread1;
+
+ private:
+ const char* mName;
+};
int main() {
- puts("start main thread");
+ puts("[main] start main thread");
- gThread1.yield_to();
+ Executor e;
+ e.spawn(std::make_unique<TestThread>("Thread1"));
+ e.spawn(std::make_unique<TestThread>("Thread2"));
+ e.spawn(std::make_unique<TestThread>("Thread3"));
+ e.run();
- puts("finish main thread");
+ puts("[main] finish main thread");
return 0;
}