macro_rules! zp_submit_batch_mixed {
($pool:expr, [$( ($params:expr, $task_fn:ident) ),* $(,)?]) => { ... };
}Expand description
Submit a batch of mixed task types with type safety
This macro allows submitting tasks of different types in a single batch, handling the type erasure automatically.
ยงExamples
use zero_pool::{ZeroPool, zp_submit_batch_mixed, zp_task_params, zp_define_task_fn, zp_write};
zp_task_params! {
Task1 { value: u64, result: *mut u64 }
}
zp_task_params! {
Task2 { value: u64, result: *mut u64 }
}
zp_define_task_fn!(task1_fn, Task1, |params| {
zp_write!(params.result, params.value * 2);
});
zp_define_task_fn!(task2_fn, Task2, |params| {
zp_write!(params.result, params.value * 3);
});
let pool = ZeroPool::new();
let mut result1 = 0u64;
let mut result2 = 0u64;
let task1 = Task1::new(5, &mut result1);
let task2 = Task2::new(7, &mut result2);
let future = zp_submit_batch_mixed!(pool, [
(&task1, task1_fn),
(&task2, task2_fn),
]);
future.wait();