scribe_scaling/
parallel.rs

1//! Parallel processing configuration for scaling operations.
2
3use std::time::Duration;
4use serde::{Deserialize, Serialize};
5
6/// Configuration for parallel processing
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct ParallelConfig {
9    /// Maximum number of concurrent tasks
10    pub max_concurrent_tasks: usize,
11    
12    /// Number of async workers
13    pub async_worker_count: usize,
14    
15    /// Number of CPU-bound workers
16    pub cpu_worker_count: usize,
17    
18    /// Timeout for individual tasks
19    pub task_timeout: Duration,
20    
21    /// Enable work-stealing between workers
22    pub enable_work_stealing: bool,
23}
24
25impl Default for ParallelConfig {
26    fn default() -> Self {
27        Self {
28            max_concurrent_tasks: num_cpus::get() * 2,
29            async_worker_count: num_cpus::get(),
30            cpu_worker_count: num_cpus::get(),
31            task_timeout: Duration::from_secs(30),
32            enable_work_stealing: true,
33        }
34    }
35}