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.