У меня вопрос о функции Linux io_uring (освобождение). Я понимаю, что есть запрос и очередь завершения ... и что мой код может представить в очередь запроса, и будет проинформировано через некоторое время через очередь завершения, о результате - после того, как ядро обработало асинхронное запрос. Интуиция предполагает, что эта память должна оставаться распределенной до тех пор, пока не будет рассмотрено ответ на очередь завершения. Интуиция предлагает аналогично для IO_URY_PREP_WRITE (...) - хотя, здесь память может быть опубликована сразу после того, как очередь завершения указывает на успех/сбой. содержащий указатель на память. Я хотел бы установить, необходимо ли приложение обеспечить, чтобы массив структурных записей IOVEC (а также память, на которой они указывают), останется до тех пор, пока очередь ответа не даст успех/сбой соответствующей операции Async.
Это (псевдо) код верен?void demo_lifetime(struct io_uring *ring, io_uring_sqe *sqe, int fd, char *ptra, size_t lena, char *ptrb, size_t lenb) {
// iov is a local array - short lifetime.
struct iovec iov[2] = { {ptra, lena}, {ptrb, lenb} };
io_uring_prep_readv(valid, fd, iov, 2, -1);
if(io_uring_submit(ring) < 0) handle_failure_sensibly();
// iov goes out of scope here
}
< /code>
или ... должно ли приложение, вызывая функции поднятия, убедиться, что массив IOV остается распределенным (и неизменным) до тех пор, пока не будет считан соответствующий ответ из очереди завершения? (Я упустил из виду ответ в документации?)
Подробнее здесь: https://stackoverflow.com/questions/796 ... rogramming
Срок службы объекта - linux io_uring (освобождение) асинхронное программирование ⇐ Linux
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как продлить срок службы объекта под asynccontextmanager в фоновой задаче в fastapi?
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-