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.

Reply via email to