aboutsummaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
authorjohannst <johannes.stoelp@gmail.com>2020-09-18 01:36:00 +0200
committerjohannst <johannes.stoelp@gmail.com>2020-09-18 01:36:00 +0200
commitd89c25701381b393839ff38f93f198c4105b2c21 (patch)
tree96b5a81b411ac1b158d9e9df6dac09063cd53fc1 /example
parentec45be0578fb50ad4f3df28275f01d82a6d7b518 (diff)
downloadmatcha-threads-d89c25701381b393839ff38f93f198c4105b2c21.tar.gz
matcha-threads-d89c25701381b393839ff38f93f198c4105b2c21.zip
move yielding into Thread base class + make user fn a pure virtual fn and require user to derive from Thread
Diffstat (limited to 'example')
-rw-r--r--example/test.cc28
1 files changed, 8 insertions, 20 deletions
diff --git a/example/test.cc b/example/test.cc
index 7307bec..b436708 100644
--- a/example/test.cc
+++ b/example/test.cc
@@ -3,30 +3,18 @@
#include <cassert>
#include <cstdio>
-Thread* gThread1 = nullptr;
-
-void thread1_1() {
- puts("thread1_1");
-}
-
-void thread1() {
- puts("start thread1");
- thread1_1();
- puts("finish thread1");
-
- assert(gThread1 != nullptr);
- yield_from(*gThread1);
-}
+struct Thread1 : public Thread {
+ virtual void threadFn() override {
+ puts("start threadFn -> yield()");
+ yield();
+ puts("return from yield() -> finish threadFn");
+ }
+} gThread1;
int main() {
puts("start main thread");
- Thread t(thread1);
- gThread1 = &t;
-
- yield_to(t);
-
- gThread1 = nullptr;
+ gThread1.yield_to();
puts("finish main thread");
return 0;