Creating an OpenGL texture in a multi-threaded environment

When creating an OpenGL texture in a multi-threaded environment the glGenTextures method will return (fill in the output argument) with zero value if the call is made from thread that hasn’t got the OpenGL context. Additionally, glGenTextures cannot be called between glBegin and glEnd calls.