concurrency/
concurrency.rs

1use std::sync::Arc;
2use std::thread;
3
4use epoch_db::DB;
5
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7    let db = Arc::new(DB::new("./my_database".as_ref())?);
8    db.set("concurrent_key", "initial_value", None)?;
9
10    let mut handles = vec![];
11    for _ in 0..10 {
12        let db_clone = Arc::clone(&db);
13        let handle = thread::spawn(move || {
14            for _ in 0..100 {
15                db_clone.increment_frequency("concurrent_key").unwrap();
16            }
17        });
18        handles.push(handle);
19    }
20
21    for handle in handles {
22        handle.join().unwrap();
23    }
24
25    let final_meta = db.get_metadata("concurrent_key")?.unwrap();
26    println!("Final frequency: {}", final_meta.freq); // "Final frequency: 1000"
27
28    Ok(())
29}