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_define_task_fn, zp_write};
struct Task1Struct { value: u64, result: *mut u64 }
struct Task2Struct { value: u64, result: *mut u64 }
zp_define_task_fn!(task1_fn, Task1Struct, |params| {
zp_write!(params.result, params.value * 2);
});
zp_define_task_fn!(task2_fn, Task2Struct, |params| {
zp_write!(params.result, params.value * 3);
});
let pool = ZeroPool::new();
let mut result1 = 0u64;
let mut result2 = 0u64;
let task1 = Task1Struct { value: 5, result: &mut result1 };
let task2 = Task2Struct { value: 7, result: &mut result2 };
let future = zp_submit_batch_mixed!(pool, [
(&task1, task1_fn),
(&task2, task2_fn),
]);
future.wait();