On Thursday, 6 August 2015 at 08:40:58 UTC, Kagamin wrote: }

AFAIK, boost does it by integrating support for interruption into various functions, so IO, waits and locks reply to interrupt requests appropriately. You can do something similar.

I understand the philosophy behind D-threads. However, I have a situation where waiting for a thread to react to an abort signal (if it reacts at all) and finish according to a protocol can cause a delay that may not be acceptable to the user or cause inconsistencies. Instant abortion works best with data sharing. However, then I have the ugly situation where I have to place the abort flag at strategical places in several functions/blocks to make sure the task will not be pursued, because you never know when exactly the new input will arrive. In this way it can be intercepted. Unfortunately, this is messy and it is not easy to avoid data races.

A possible solution would be to halt all threads except for the main thread, spawn a new thread, and end the old thread silently behind the scenes. I'm not sure, if this is possible though. I also wonder, if it would be possible to use some sort of observer that never sleeps.

Reply via email to