diff --git a/src/daemon.rs b/src/daemon.rs index c14e982..0a9551f 100644 --- a/src/daemon.rs +++ b/src/daemon.rs @@ -13,7 +13,7 @@ use std::collections::{HashMap, HashSet}; use std::io::{BufRead, BufReader, Lines, Write}; use std::net::{SocketAddr, TcpStream}; use std::path::PathBuf; -use std::sync::{Arc, Mutex}; +use std::sync::{Arc, Mutex, atomic::{AtomicU64, Ordering}}; use std::time::Duration; use crate::errors::*; @@ -267,20 +267,19 @@ impl Connection { } struct Counter { - value: Mutex, + value: AtomicU64, } impl Counter { fn new() -> Self { Counter { - value: Mutex::new(0), + value: 0.into(), } } fn next(&self) -> u64 { - let mut value = self.value.lock().unwrap(); - *value += 1; - *value + // fetch_add() returns previous value, we want current one + self.value.fetch_add(1, Ordering::Relaxed) + 1 } }