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 /lib/matcha.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 'lib/matcha.cc')
-rw-r--r-- | lib/matcha.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/matcha.cc b/lib/matcha.cc index 3f7cd7b..561a08f 100644 --- a/lib/matcha.cc +++ b/lib/matcha.cc @@ -14,7 +14,7 @@ long get_pagesize() { return sysconf(_SC_PAGESIZE); } -Thread::Thread(void (*fn)()) : mUserFn(fn) { +Thread::Thread() { const long PAGE_SIZE = get_pagesize(); const long STACK_SIZE = 8 * PAGE_SIZE; @@ -53,16 +53,16 @@ void Thread::entry(void* obj) { Thread* t = static_cast<Thread*>(obj); puts("thread entry"); - t->mUserFn(); + t->threadFn(); puts("thread done"); } void* gOriginalStack; -void yield_to(const Thread& t) { - yield(t.mStackPtr, &gOriginalStack); +void Thread::yield() { + ::yield(gOriginalStack, &mStackPtr); } -void yield_from(Thread& t) { - yield(gOriginalStack, &t.mStackPtr); +void Thread::yield_to() const { + ::yield(mStackPtr, &gOriginalStack); } |