"Buffer objects may be shared by rendering contexts, as long as the server
portion of the contexts share the same address space. (Like display lists
and texture objects, buffer objects are part of the server context state.)
OpenGL makes no attempt to synchronize access to buffer objects. If a
buffer object is bound to more than one context, then it is up to the
programmer to ensure that the contents of the object are not being changed
via one context while another context is using the buffer object for
rendering. The results of changing a buffer object while another context
is using it are undefined."