fn joinable_executor(&self, id: usize) {
        if let Some(_worker) = self.parked_workers.write().remove(&id) {
            log::debug!("dropping worker {}", id);
        } else if self.workers.read().contains_key(&id) {
            log::debug!("dropping worker {} is still in the workers table", id);
        } else {
            log::warn!("joinable executor {} isn't on any list", id);
        }
        let live_count = self.workers.read().len();
        log::debug!("there are now {} live executors", live_count);
        self.wake_parked_threads();
    }
// notification that an executor completed and can be joined
notification that an executor completed and can be joined
notification that an executor completed and can be joined
fn joinable_executor(&self, id: usize) {
        if let Some(_worker) = self.parked_workers.write().remove(&id) {
            log::debug!("dropping worker {}", id);
        } else if self.workers.read().contains_key(&id) {
            log::debug!("dropping worker {} is still in the workers table", id);
        } else {
            log::warn!("joinable executor {} isn't on any list", id);
        }
        let live_count = self.workers.read().len();
        log::debug!("there are now {} live executors", live_count);
        self.wake_parked_threads();
    }
fn joinable_executor ( & self , id : usize ) { if let Some ( _worker ) = self . parked_workers . write ( ) . remove ( & id ) { log :: debug ! ( " " id ) ; } else if self . workers . read ( ) . contains_key ( & id ) { log :: debug ! ( " " id ) ; } else { log :: warn ! ( " " id ) ; } let live_count = self . workers . read ( ) . len ( ) ; log :: debug ! ( " " live_count ) ; self . wake_parked_threads ( ) ; }
notification that an executor completed and can be joined
notification that an executor completed and can be joined
&self
id
usize