pub mod builder;
pub mod config;
pub mod control;
pub mod manager;
pub mod spawner;
pub use builder::ExecutorBuilder;
pub use config::{CleanupConfig, ExecutorConfig, MemoryConfig, PreemptionConfig};
pub use control::ExecutorControl;
pub use manager::{TaskManager, TaskStats, TaskStatus};
pub use spawner::TaskSpawner;
pub trait Executor: TaskSpawner + TaskManager + ExecutorControl {
#[cfg(feature = "metrics")]
fn stats(&self) -> ExecutorStats;
}
#[cfg(not(feature = "metrics"))]
#[derive(Debug, Clone, Default)]
pub struct ExecutorStats;
#[cfg(feature = "metrics")]
#[derive(Debug, Clone, Default)]
pub struct ExecutorStats {
pub tasks_executed: u64,
pub tasks_queued: usize,
pub avg_execution_time_ns: u64,
}
pub(crate) fn num_cpus() -> usize {
#[cfg(feature = "std")]
{
std::thread::available_parallelism().map_or(1, std::num::NonZeroUsize::get)
}
#[cfg(not(feature = "std"))]
{
4 }
}