zp_submit_batch_mixed

Macro zp_submit_batch_mixed 

Source
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();