PBO and glReadPixels()

Hi there
When using PBOs, glReadPixels() is a non-blocking function. So how can I understand that when it finishes the reading process?

The spec states that the reading process will be finished when you use the buffer data (for example, map it). I guess you can also use the NV_fence extension.