Function unlock::capture

source ·
pub fn capture()
Expand description

Configure whether capturing is enabled or not.

This can be used to enable capture in detail for particular sections of code.

Once called capturing will be started and the timestamp for the capture system will be reset.

Examples found in repository?
examples/race.rs (line 11)
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let lock = Arc::new(RwLock::new(0u64));

    let mut threads = Vec::new();

    unlock::capture();

    for _ in 0..10 {
        let lock = lock.clone();

        threads.push(thread::spawn(move || {
            let mut sum = 0u64;

            for n in 0..1000 {
                if n % 4 == 0 {
                    *lock.write() += 1;
                } else {
                    sum += *lock.read();
                }
            }

            sum
        }));
    }

    let mut total = 0;

    for thread in threads {
        total += thread.join().unwrap();
    }

    dbg!(total);

    let events = unlock::drain();
    dbg!(events.len());
    unlock::html::write("trace.html", &events)?;
    Ok(())
}