each context has a condition variable on which it will wait for
various events