summaryrefslogtreecommitdiff
path: root/fibers.scm
diff options
context:
space:
mode:
Diffstat (limited to 'fibers.scm')
-rw-r--r--fibers.scm8
1 files changed, 7 insertions, 1 deletions
diff --git a/fibers.scm b/fibers.scm
index 8ae1d92..a0d6bab 100644
--- a/fibers.scm
+++ b/fibers.scm
@@ -58,7 +58,13 @@
(parameterize ((current-read-waiter wait-for-readable)
(current-write-waiter wait-for-writable))
(with-interrupts
- hz yield-current-fiber
+ hz
+ (let ((last-runcount 0))
+ (lambda ()
+ (let ((runcount (scheduler-runcount scheduler)))
+ (when (eqv? runcount last-runcount)
+ (yield-current-fiber))
+ (set! last-runcount runcount))))
(lambda ()
(run-scheduler scheduler finished?)))))))