A Real Condition For A Condition Variable A condition variable alone just performs signaling. However, if the signaling process signaled the variable before the waiting thread started waiting on it - the waiting thread will block "forever". To avoid this, we must associate a real condition with the condition variable. The signaling thread will set the data checked in this condition, and the waiting thread will test it. For example, if we have a queue of commands filled by one thread and emptied by another thread, the condition might be the size of the queue.