Threads operate with the same variables as the main task.
Subsequently, while both are running *simultaneously* (watch how you take that stmt without multiple cpu(s)) you can "use" variables in both/multiple threads and thus *screw* yourself.
Thread-safe means you have taken measures to *not* fall into that trap.
As for myself, I generally run a thread kind of like a program. I define some input "parm" variables, define some for just the thread (those that can't be put on the stack), and a place for the "response" (more variables).
I don't know if it's *eloquent* or not, but it works.
Regards and HTH,
JGS