I have a multithreaded program where I create a generator function and then pass it to new threads. I want it to be shared/global in nature so each thread can get the next
No, they are not thread-safe. You can find interesting info about generators and multi-threading in:
http://www.dabeaz.com/generators/Generators.pdf