summaryrefslogtreecommitdiff
path: root/fibers.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2016-09-20 02:13:07 +0200
committerAndy Wingo <wingo@pobox.com>2016-09-20 02:13:07 +0200
commit5a2106c65b9b3dacf6d92a434036a76ebafe1efb (patch)
treed84ca9b478eb9a643600ab3ab4997bde4d5a3c7c /fibers.scm
parentUpdate TODO.md (diff)
downloadguile-fibers-5a2106c65b9b3dacf6d92a434036a76ebafe1efb.tar.gz
Add support for ,spawn-fiber
Diffstat (limited to 'fibers.scm')
-rw-r--r--fibers.scm21
1 files changed, 11 insertions, 10 deletions
diff --git a/fibers.scm b/fibers.scm
index 0af520a..8548ddb 100644
--- a/fibers.scm
+++ b/fibers.scm
@@ -53,16 +53,17 @@
(install-suspendable-ports? #t)
(keep-scheduler? (eq? scheduler (current-scheduler))))
(when install-suspendable-ports? (install-suspendable-ports!))
- (parameterize ((current-scheduler scheduler)
- (current-read-waiter wait-for-readable)
- (current-write-waiter wait-for-writable))
- (call-with-values
- (lambda ()
- (run-scheduler scheduler
- #:join-fiber (and init (spawn-fiber init scheduler))))
- (lambda vals
- (unless keep-scheduler? (destroy-scheduler scheduler))
- (apply values vals)))))
+ (with-scheduler
+ scheduler
+ (parameterize ((current-read-waiter wait-for-readable)
+ (current-write-waiter wait-for-writable))
+ (call-with-values
+ (lambda ()
+ (run-scheduler scheduler
+ #:join-fiber (and init (spawn-fiber init scheduler))))
+ (lambda vals
+ (unless keep-scheduler? (destroy-scheduler scheduler))
+ (apply values vals))))))
(define (require-current-scheduler)
(or (current-scheduler)