When acquire_write or acquire_read times out, call notify_all() before returning False so waiters blocked by the timed-out thread's presence (e.g. readers blocked by writer-preference _writers_waiting > 0) are woken immediately instead of sleeping until the next external notify.