Break threads only after their output-queues have been drained.
This commit is contained in:
parent
29dd5226c2
commit
887aada203
|
@ -156,11 +156,16 @@
|
|||
acc
|
||||
(choice-evt acc
|
||||
(let-values (((first rest) (dequeue (unbox qb))))
|
||||
(handle-evt (channel-put-evt (binding-out-ch b)
|
||||
first)
|
||||
(lambda (dummy)
|
||||
(set-box! qb rest)
|
||||
(room-main state)))))))
|
||||
(if (and (departed? first)
|
||||
(binding-break-on-departure? b))
|
||||
(begin (break-thread (binding-thread b))
|
||||
never-evt)
|
||||
(handle-evt (channel-put-evt
|
||||
(binding-out-ch b)
|
||||
first)
|
||||
(lambda (dummy)
|
||||
(set-box! qb rest)
|
||||
(room-main state))))))))
|
||||
(handle-evt (binding-in-ch b)
|
||||
(lambda (message)
|
||||
(room-main (handle-binding-message state b message))))
|
||||
|
@ -231,7 +236,4 @@
|
|||
|
||||
(define (enqueue-message! b message)
|
||||
(define qb (binding-queue-box b))
|
||||
(if (and (departed? message)
|
||||
(binding-break-on-departure? b))
|
||||
(break-thread (binding-thread b))
|
||||
(set-box! qb (enqueue (unbox qb) message))))
|
||||
(set-box! qb (enqueue (unbox qb) message)))
|
||||
|
|
Loading…
Reference in New Issue