is it possible to synchronize against two OpenGL contexts?

I need to transfer data From one OpenGL context to CUDA and from there to a second OpenGL context. These need to be two contexts due to synchronization issues. They will reside in two different threads. The system is Linux 64bit with UVA enabled.

Can I just create an CUDA / OpenGL interop context in each thread against the relevant OpenGL context (all using the same device) and then just use the second CUDA context to do the context to the OpenGL context, or is there a better way to do this, i.e

OpenGL 1 Renders
CUDA 1 maps PBO from OpenGL 1
CUDA 2 maps PBO from OpenGL 2
CUDA 1 processes from mapped pointer 1 to mapped pointer 2
Cuda 2 unmaps PBO
OpenGL 2 renders