pub type ThreadFnPtr = dyn Fn(Box<dyn Thread>, Option<ThreadParam>) -> Result<ThreadParam> + Send + Sync + 'static;Expand description
All OSAL trait definitions for advanced usage. Thread callback function pointer type.
Thread callbacks receive a boxed thread handle and optional parameter, and can return an updated parameter value.
§Parameters
Box<dyn Thread>- Handle to the thread itself (for self-reference)Option<ThreadParam>- Optional type-erased parameter passed at spawn time
§Returns
Result<ThreadParam> - Updated parameter or error
§Trait Bounds
The function must be Send + Sync + 'static to be safely used across
thread boundaries and to live for the duration of the thread.
§Examples
use osal_rs::os::*;
use std::sync::Arc;
let callback: Box<ThreadFnPtr> = Box::new(|_thread, param| {
if let Some(p) = param {
if let Some(count) = p.downcast_ref::<u32>() {
return Ok(Arc::new(*count + 1));
}
}
Ok(Arc::new(0u32))
});
// This is how `spawn` invokes it: with a handle to the thread itself and
// the parameter it was spawned with.
let thread = Thread::new("worker", 1024, 1);
let result = callback(Box::new(thread), Some(Arc::new(41u32))).unwrap();
assert_eq!(result.downcast_ref::<u32>(), Some(&42));