concurrency/
concurrency.rs

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