use std::sync::Arc; use std::sync::atomic::{AtomicU64, Ordering}; use std::time::Duration; use crate::asm::data::literal::Value; use crate::runtime::program::Program; use crate::runtime::run_thread::ThreadToken; pub struct ThreadInfo { /// Thread ID pub id: ThreadToken, /// Thread ID pub(crate) uniq: Arc, /// Program to run pub program: Arc, /// Program to run pub(crate) cycle_time: Duration, } pub const UNIQ_BASE: u64 = 0x6372_736e_0000_0000; impl ThreadInfo { pub fn uniq(&self) -> Value { self.uniq.fetch_add(1, Ordering::Relaxed) } }