If your local variables are not static, yes.
"Some locking" mechanism is a somewhat sloppy term. You have to use a carefully designed, well thought locking policy. The problem is not so much in protecting the integrity of the variables, but in the avoidance of lock conditions. There are a couple of standard functions in the thread library which deal with locking, like semaphores.
I am not opposed to threads at all, but some people are and describe the problems they can cause:
And Google will turn up many more documents.