I have written quite a bit of OpenGL code lately and I have noticed something. As it is a state machine and you go through setting global states before you write out entities, can OpenGL be accessed in a thread safe manner?

I would like to figure out a way to make calls in multiple threads and I have run into problems because certain calls can not be made between "begin" and "end". Specifically, I want to be able to create display lists in a different thread than is doing the rendering. Is this an unreasonable idea in OpenGL?