On Wednesday, 22 July 2015 at 16:16:36 UTC, John Colvin wrote:
On Wednesday, 22 July 2015 at 15:51:23 UTC, Chris wrote:
On Wednesday, 22 July 2015 at 15:41:06 UTC, Alex Parrill wrote:
[...]
Thanks. I'm dealing with "nested" threads at the moment.
main
{
spawn(thread1)
{
// Does some processing
spawn(thread2)
{
// Plays audio
}
}
}
If main receives a signal, all threads should stop immediately
(thread1 and thread2).
I would send a message to terminate to thread1, which would in
turn send a similar message to any threads it has started, wait
until they've all stopped (maybe with a time-out), then return.
I.e. every thread knows how to cleanly terminate itself when
instructed, so you just send a terminate message down the tree
of threads and then wait for the effects to bubble back up to
main.
You can probably simply terminate the main thread, which will
send an OwnerTerminated message to all dependent threads. The
threads need to `receive()` this message and terminate.