When using sbvWithAny or sbvConcurrentlyWithAny, don't use
the ThreadKilled exception to cancel solver threads once we get
a result back. If we use an async exception, it will be explicitly
filtered by the exception-handling code, leaving the solver processes
continuting to work on queries.
Instead, we throw a ExitSuccess value to the threads, which causes
them to enter their normal exception-handling stacks. This eventually
sends a termination signal to the associated solver processes before
killing the associated thread.
When using
sbvWithAny
orsbvConcurrentlyWithAny
, don't use theThreadKilled
exception to cancel solver threads once we get a result back. If we use an async exception, it will be explicitly filtered by the exception-handling code, leaving the solver processes continuting to work on queries.Instead, we throw a
ExitSuccess
value to the threads, which causes them to enter their normal exception-handling stacks. This eventually sends a termination signal to the associated solver processes before killing the associated thread.Fixes #532