fn process_notifications<P>(&mut self, circuit: &Circuit<P>)
    where
        P: Clone + 'static,
    {
        for id in self.notifications.nodes.lock().unwrap().drain() {
            let task = &mut self.tasks[id.id()];
            debug_assert!(task.is_async);

            // Ignore duplicate notifications.
            if task.is_ready {
                continue;
            }

            // Ignore spurious notifications.
            if circuit.ready(id) {
                task.is_ready = true;
                // We can see a notification for an already scheduled task
                // indicating that it's become ready again.
                // This notification should take effect at the next clock
                // cycle.
                if task.unsatisfied_dependencies == 0 && !task.scheduled {
                    self.runnable.push(task);
                }
            }
        }
    }
/// Process and dequeue new notifications.
Process and dequeue new notifications.
Process and dequeue new notifications .
fn process_notifications<P>(&mut self, circuit: &Circuit<P>)
    where
        P: Clone + 'static,
    {
        for id in self.notifications.nodes.lock().unwrap().drain() {
            let task = &mut self.tasks[id.id()];
            debug_assert!(task.is_async);
            // Ignore duplicate notifications.
            if task.is_ready {
                continue;
            }
            // Ignore spurious notifications.
            if circuit.ready(id) {
                task.is_ready = true;
                // We can see a notification for an already scheduled task
                // indicating that it's become ready again.
                // This notification should take effect at the next clock
                // cycle.
                if task.unsatisfied_dependencies == 0 && !task.scheduled {
                    self.runnable.push(task);
                }
            }
        }
    }
fn process_notifications < P > ( & mut self , circuit : & Circuit < P > ) where P : Clone + ' static , { for id in self . notifications . nodes . lock ( ) . unwrap ( ) . drain ( ) { let task = & mut self . tasks [ id . id ( ) ] ; debug_assert ! ( task is_async ) ; // Ignore duplicate notifications. if task . is_ready { continue ; } // Ignore spurious notifications. if circuit . ready ( id ) { task . is_ready = true ; // We can see a notification for an already scheduled task // indicating that it's become ready again. // This notification should take effect at the next clock // cycle. if task . unsatisfied_dependencies == 0 && ! task . scheduled { self . runnable . push ( task ) ; } } } }
Process and dequeue new notifications.
Process and dequeue new notifications .
&mut self
circuit
&Circuit<P>