Skip to main content

rumtk_critical_section_read

Macro rumtk_critical_section_read 

Source
macro_rules! rumtk_critical_section_read {
    ( $lock:expr, $function:expr ) => { ... };
}
Expand description

Using a standard spin lock SafeLock, lock it and execute the critical section. The critical section itself is a synchronous function or closure. In this case, the critical section simply retrieves a value from a guarded dataset.

ยงExample

use rumtk_core::core::RUMResult;
use rumtk_core::{rumtk_new_lock, rumtk_critical_section_read};

let data = 5;
let lock = rumtk_new_lock!(data);
let result = rumtk_critical_section_read!(
    lock,
    |guard| -> RUMResult<i32> {
        let result: i32 = *guard;
        Ok(result)
    }
).expect("No errors locking!");

assert_eq!(result, data, "Critical section yielded invalid result!");