#[derive(Debug, Clone, Copy, PartialEq)]
pub struct ContentionThresholds {
min_attempts: u32,
min_conflicts: u32,
conflict_ratio: f64,
}
impl ContentionThresholds {
#[inline]
pub fn new(min_attempts: u32, min_conflicts: u32, conflict_ratio: f64) -> Self {
Self {
min_attempts,
min_conflicts,
conflict_ratio: conflict_ratio.clamp(0.0, 1.0),
}
}
#[inline]
pub fn min_attempts(&self) -> u32 {
self.min_attempts
}
#[inline]
pub fn min_conflicts(&self) -> u32 {
self.min_conflicts
}
#[inline]
pub fn conflict_ratio(&self) -> f64 {
self.conflict_ratio
}
}
impl Default for ContentionThresholds {
#[inline]
fn default() -> Self {
Self::new(3, 1, 0.30)
}
}