Use default io waiters in the thread pool
To allow creating thread pools from fibers.
This commit is contained in:
parent
ee2a93fbca
commit
6c083bdebd
1 changed files with 12 additions and 3 deletions
|
@ -32,6 +32,7 @@
|
||||||
#:use-module (fibers timers)
|
#:use-module (fibers timers)
|
||||||
#:use-module (fibers channels)
|
#:use-module (fibers channels)
|
||||||
#:use-module (fibers operations)
|
#:use-module (fibers operations)
|
||||||
|
#:use-module (knots)
|
||||||
#:export (set-thread-name
|
#:export (set-thread-name
|
||||||
thread-name
|
thread-name
|
||||||
|
|
||||||
|
@ -161,7 +162,8 @@ from there, or #f if that would be an empty string."
|
||||||
thread-lifetime
|
thread-lifetime
|
||||||
(log-exception? (const #t))
|
(log-exception? (const #t))
|
||||||
(expire-on-exception? #f)
|
(expire-on-exception? #f)
|
||||||
(name "unnamed"))
|
(name "unnamed")
|
||||||
|
(use-default-io-waiters? #t))
|
||||||
"Return a channel used to offload work to a dedicated thread. ARGS are the
|
"Return a channel used to offload work to a dedicated thread. ARGS are the
|
||||||
arguments of the thread pool procedure."
|
arguments of the thread pool procedure."
|
||||||
(define param
|
(define param
|
||||||
|
@ -293,7 +295,7 @@ arguments of the thread pool procedure."
|
||||||
#f)))
|
#f)))
|
||||||
(loop #f))))))
|
(loop #f))))))
|
||||||
|
|
||||||
(let ((channel (make-channel)))
|
(define (start-threads channel)
|
||||||
(for-each
|
(for-each
|
||||||
(lambda (thread-index)
|
(lambda (thread-index)
|
||||||
(call-with-new-thread
|
(call-with-new-thread
|
||||||
|
@ -323,7 +325,14 @@ arguments of the thread pool procedure."
|
||||||
(destructor/safe args))
|
(destructor/safe args))
|
||||||
|
|
||||||
(init (initializer/safe))))))
|
(init (initializer/safe))))))
|
||||||
(iota size))
|
(iota size)))
|
||||||
|
|
||||||
|
(let ((channel (make-channel)))
|
||||||
|
(if use-default-io-waiters?
|
||||||
|
(call-with-default-io-waiters
|
||||||
|
(lambda ()
|
||||||
|
(start-threads channel)))
|
||||||
|
(start-threads channel))
|
||||||
|
|
||||||
(thread-pool channel
|
(thread-pool channel
|
||||||
param
|
param
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue