Every time you make a new thread, it copies everything. If you're not on Windows, you might want to try using forking instead. It will use less memory because of copy-on-write.
1. What about when the thread exits? Each time it initiates, they usually end a few minutes later...
2. Should I be fine now with goto / while(1) instead?