sync.Cond coordinates goroutines that share state through a sync.Locker. A waiting goroutine checks a condition while holding the lock, then calls Wait when the condition is false. Wait atomically releases the lock and suspends execution; returning from Wait reacquires it. section 5.1.1
Waiting for enough money
A spending goroutine locks cond.L and waits while money is below 50. A funding goroutine adds money, calls Signal, and unlocks. The spender resumes, reacquires the lock, and subtracts 50 without allowing the balance to become negative.

