当有多个线程在 wait(&state, 2) 阻塞时,只有第一次 unlock(swap 返回 2)会调用 wake_one,后续持锁线程的 swap 返回的是 1,就不会再唤醒剩下的线程,导致它们永远在那里等待。