Although process shutdown might be done differently, for instance terminating the process more violently, I don't think it's a very good solution and it also doesn't solve the problem with `TerminateThread` which might be called on a thread that is waiting on a condition variable.
`TerminateThread` is not supposed to cleanup anything, so it's OK if it leaves the process in a broken state. I don't think it makes sense to try to do a more orderly shutdown while still longjmping out of cleanup handlers.