Compio with executor and dispatcher decoupled that can be swapped compio.rs
Scheduling multithreaded computations by work stealing dl.acm.org
Completion model makes use of an ownership model. There can be an issue with respect to drop problem on how buffer should be handled when a future is dropped as results will be written back to this buffer. (I’ not sure about this, have to research). Complexities wrt in flight future operation cancellations. Dropping future does not stop kernels handling of the memory that it was given ownership to.
// compio (ownership mode)// kernel must have ownership to the buffer that it is writing tolet buf = [0; 4096];// buf is not borrowedlet (res, buf) = file.read_at(buf, 0).await;// ^^^ buffer returned with data// tokio (borrowing) modelfile.read(&mut buf).await?; // here buf is borrowed
Advantages wrt zero-copy optimisations, completion models support batched submission for I/O operations, etc (check slides),