use crate::ThreadId;
use crate::core::detector::GLOBAL_DETECTOR;
use crate::core::logger;
use crate::core::{Detector, Events};
impl Detector {
pub fn spawn_thread(&mut self, thread_id: ThreadId, parent_id: Option<ThreadId>) {
logger::log_thread_event(thread_id, parent_id, Events::ThreadSpawn);
self.wait_for_graph.edges.entry(thread_id).or_default();
}
pub fn exit_thread(&mut self, thread_id: ThreadId) {
logger::log_thread_event(thread_id, None, Events::ThreadExit);
self.wait_for_graph.remove_thread(thread_id);
self.thread_holds.remove(&thread_id);
}
}
pub fn spawn_thread(thread_id: ThreadId, parent_id: Option<ThreadId>) {
let mut detector = GLOBAL_DETECTOR.lock();
detector.spawn_thread(thread_id, parent_id);
}
pub fn exit_thread(thread_id: ThreadId) {
let mut detector = GLOBAL_DETECTOR.lock();
detector.exit_thread(thread_id);
}