diff options
| author | Nicolas Noble <pixel@nobis-crew.org> | 2013-08-01 17:29:46 -0700 | 
|---|---|---|
| committer | Nicolas Noble <pixel@nobis-crew.org> | 2013-08-01 17:29:46 -0700 | 
| commit | 20b8ddc82b3c7b725993b2053acb35676801ce8b (patch) | |
| tree | 12127215a1cc0389f3be8e00981b5fb8aa1aab9d | |
| parent | 95ea7b338aa5d48994ba96571811c25e9d44e41a (diff) | |
Slightly more robust yield() call.
| -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); | 
