It might be interesting to use `io_uring` for asynchronous IO. It is Linux specific, but so is `pwritev` and `preadv`.