On first iteration:* Writer gains the lock* Reader is blocked while trying to obtain lock* Writer calls condition.notify_all()* Writer calls condition.wait(), thus releasing the mutex and blocking itself until condition.notify_*()* Reader is unblocked* Reader calls condition.wait(), releasing the mutex and blocking itself until condition.notify_*():-)--robi just merely copied the example from this link (Multithread section exercises ) ! so this means the example is faulty ?