What you should do is:
1) In worker thread, waiting for an shutdown event
2) In parent thread, signal the shutdown event
3) In parent thread, wait for the handle object of the worker thread with a timeout (0-INFINITE)
4) In parent thread, if the waiting func returns timeout, kill the worker thread.