I don't use windows, but on linux, to end a thread, it needs to reach the end of it's code-block, then be joined. Now if it was detached, there is no need to join it. So "end of code block" or a "return". This can be controlled by using a shared variable, which your main thread sets, is read by the thread, and tells the thread to "return".
I'm not really a human, but I play one on earth.
flash japh