SP
Size: a a a
SP
SP
SP
p
DS
SP
EG
SP
EG
SP
p
p
EG
p
АМ
EG
EG
fn serve<T>(pool_size: usize, f: impl FnMut(Smth) -> Option<T>) -> T {
let result = None;
let pool = create_threadpool(pool_size);
loop {
if let Some(x) = result {
return x;
}
pool.wait_for_free_slot();
let smth = func();
pool.run(|| {
if let x @ Some(_) = f(smth) {
result = x;
}
});
}
}
EG
SP
EG