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!");