I'm experimenting with using custodians to manage threads (on Racket 7.8 [cs]) and encountering behavior I don't understand.
I start a looping thread `t1` under a new custodian `c1`.
I then shutdown `c1` and expect `t1` to stop looping. If I started `t1` with `thread` then this expectation is met. However, if I start it with `thread/suspend-to-kill`, it continues looping even after `c1` is shut down. Is this the correct behavior?
Additionally, I later start a new thread `t2` under a new custodian `c2`, which attempts to resume `t1` after the shutdown, using itself as a benefactor. However, `t1` does not seem to resume. Is this the correct behavior?
Here is the code I'm working with:
```
#lang racket
(define c1 (make-custodian))
(define c2 (make-custodian))
(define t1 #f)
(define t2 #f)
(parameterize ((current-custodian c1))
;(set! t1 (thread/suspend-to-kill ;; (custodian-shutdown-all c1) fails to suspend this thread
(set! t1 (thread
(lambda ()
(let loop ()
(displayln "thread 1")
(sleep 2)
(loop))))))
(displayln "ENTER to continue")
(read-line)
(custodian-shutdown-all c1)
(displayln "ENTER to continue")
(read-line)
(parameterize ((current-custodian c2))
(set! t2 (thread
(lambda ()
(thread-resume t1 (current-thread))
(let loop ()
(displayln "thread 2")
(sleep 2)
(loop))))))
(displayln "ENTER to continue")
(read-line)
(custodian-shutdown-all c2)
(displayln "ENTER to continue")
(read-line)
```