diff options
| author | Andy Wingo <wingo@pobox.com> | 2016-09-02 09:01:34 +0200 |
|---|---|---|
| committer | Andy Wingo <wingo@pobox.com> | 2016-09-02 09:01:34 +0200 |
| commit | aeb38b4e53cf71b283dabcff253111f1b2ecf2c1 (patch) | |
| tree | 6153053a3f0c9745270b694373bad28010fa4c21 /fibers.scm | |
| parent | Readability refactors to fibers.scm (diff) | |
| download | guile-fibers-aeb38b4e53cf71b283dabcff253111f1b2ecf2c1.tar.gz | |
Slight internal refactor
* fibers.scm (run): Inline `next-fiber' into its only use.
Diffstat (limited to 'fibers.scm')
| -rw-r--r-- | fibers.scm | 26 |
1 files changed, 12 insertions, 14 deletions
@@ -150,18 +150,6 @@ (resume fiber (lambda () 0) ctx)) wakers))))))) -(define (next-fiber ctx) - (let lp () - (let ((runnables (scheduler-runnables ctx))) - (cond - ((pair? runnables) - (let ((fiber (car runnables))) - (set-scheduler-runnables! ctx (cdr runnables)) - fiber)) - (else - (poll-for-events ctx) - (lp)))))) - (define (run-fiber ctx fiber) (when (eq? (fiber-state fiber) 'runnable) (parameterize ((current-fiber fiber)) @@ -216,8 +204,18 @@ (current-read-waiter wait-for-readable) (current-write-waiter wait-for-writable)) (let lp () - (run-fiber ctx (next-fiber ctx)) - (lp)))) + (let ((runnables (scheduler-runnables ctx))) + (cond + ((pair? runnables) + (let ((fiber (car runnables))) + (set-scheduler-runnables! ctx (cdr runnables)) + (run-fiber ctx fiber) + (lp))) + ((poll-for-events ctx) + (lp)) + (else + ;; Nothing runnable; quit. + (values))))))) (define* (spawn thunk #:optional (ctx (ensure-current-scheduler))) (create-fiber ctx thunk)) |
