The GCond struct is an opaque data structure that represents a
condition. Threads can block on a GCond if they find a certain
condition to be false. If other threads change the state of this
condition they signal the GCond, and that causes the waiting
threads to be woken up.