A condition variable is a place where a thread can wait until some condition becomes true. The condition is implicit in the program. When a thread needs the condition to be true, but finds that it is false, it waits on the condition variable. When a thread makes the condition true, it signal a thread or threads that are waiting on the condition variable.