diff --git a/src/scheme/pipe.rs b/src/scheme/pipe.rs index 42feecf2e2..34be346ffa 100644 --- a/src/scheme/pipe.rs +++ b/src/scheme/pipe.rs @@ -102,17 +102,15 @@ impl KernelScheme for PipeScheme { let scheme_id = GlobalSchemes::Pipe.scheme_id(); let can_remove = if is_write_not_read { - event::trigger(scheme_id, key, EVENT_READ); - - pipe.read_condition.notify(token); pipe.writer_is_alive.store(false, Ordering::SeqCst); + event::trigger(scheme_id, key, EVENT_READ); + pipe.read_condition.notify(token); !pipe.reader_is_alive.load(Ordering::SeqCst) } else { - event::trigger(scheme_id, key | WRITE_NOT_READ_BIT, EVENT_WRITE); - - pipe.write_condition.notify(token); pipe.reader_is_alive.store(false, Ordering::SeqCst); + event::trigger(scheme_id, key | WRITE_NOT_READ_BIT, EVENT_WRITE); + pipe.write_condition.notify(token); !pipe.writer_is_alive.load(Ordering::SeqCst) };