The producer waiting for the consumer to yield execution is exactly what's happening. The consumer thread will continuously read *flag, see it's 1, read it again, see it's 1. The producer never executes. The system as a whole is executing instructions so the system is live, but no thread is...