diff options
author | johannst <johannes.stoelp@gmail.com> | 2020-09-18 01:36:00 +0200 |
---|---|---|
committer | johannst <johannes.stoelp@gmail.com> | 2020-09-18 01:36:00 +0200 |
commit | d89c25701381b393839ff38f93f198c4105b2c21 (patch) | |
tree | 96b5a81b411ac1b158d9e9df6dac09063cd53fc1 /example/test.cc | |
parent | ec45be0578fb50ad4f3df28275f01d82a6d7b518 (diff) | |
download | matcha-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/test.cc')
-rw-r--r-- | example/test.cc | 28 |
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; |