diff options
-rw-r--r-- | includes/Task.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/includes/Task.h b/includes/Task.h index 27cb0bc..26d2c65 100644 --- a/includes/Task.h +++ b/includes/Task.h @@ -167,9 +167,7 @@ class Task { struct ev_loop * getLoop(); bool isStackless() { return m_stackless; } protected: - void yield(Events::BaseEvent * evt = NULL) throw (GeneralException) { - if (evt) - waitFor(evt); + void yield() throw (GeneralException) { if (yield(false)) throw EAgain(NULL); } @@ -191,6 +189,11 @@ class Task { m_okayToEAgain = true; } private: + void yield(Events::BaseEvent * evt) throw (GeneralException) { + waitFor(evt); + if (yield(false)) + throw EAgain(NULL); + } bool yield(bool stillRunning); static size_t stackSize() { return 64 * 1024; } void setup(TaskMan * taskMan, void * stack); |