Let me point out that if the combat loop has been started and you enter combat again you could have serveral combat loops running, so you need some sort of thread sycronisation. The easiest way to do it for what your doing is this:
The first thing the combat loop dose is set a global variable to true (something like bInCombat) before your main loop calls beginthread it checks the variable and only enters the combat loop if its not allready running.
That is just one Option and it depends on your program.