On 28May2014 18:20, Carl Banks <pavlovevide...@gmail.com> wrote:
Here's the solution I came up with: in the library's init function, it will
start a non-daemon thread that simply joins the main thread, and then asks all
existing worker threads to exit gracefully before timing out and leaving them
to be killed. So if an exception ends the main thread, there is still a chance
to clean up properly.
Does anyone see a potential problem with this approach? It it possible that
this will cause the program to hang in any case? We can assume that all calls
to the library will occur from the main thread, or at least from the same
thread. (If that isn't the case, then the caller has taken responsibility to
ensure the program doesn't hang.)
That sounds safe to me, unless any of the subthreads call some C-level library
routine that hangs even in a daemon thread. Which I assume either isn't the
case or isn't a bug addressable this way anyway.
That's probably the best you can do from the sound of it, given that you may
not hang (for longer than your timeout choice) and the calls are all at the
whim of an external caller.
BTW, what were your dislikes of the with statement?
Disclaimer: I'm not a Windows guy.
Cameron Simpson <c...@zip.com.au>