Entry tags:
Асинхронный линукс
Народ, кто-нибудь уже поимел опыт с <linux/io_uring.h>? Как оно по жизни?
Неожиданно для себя обнаружил, что в Линуксе пять лет назад появилась крутая фича. А именно три системных вызова, реализующих эффективный асинхронный интерфейс ко всем сервисам ядра.
Неожиданно для себя обнаружил, что в Линуксе пять лет назад появилась крутая фича. А именно три системных вызова, реализующих эффективный асинхронный интерфейс ко всем сервисам ядра.
- int io_uring_setup(unsigned entries, struct io_uring_params *p);
- int io_uring_enter(unsigned fd, unsigned to_submit, unsigned min_complete, unsigned flags, sigset_t *sig);
- int io_uring_register(unsigned fd, unsigned opcode, void *arg, unsigned nr_args);
no subject
no subject
Народ пытается упростить на Rust, но пока не впечатляет.
https://github.com/tokio-rs/io-uring
На Си++ ещё кривее выходит.
https://live.boost.org/doc/libs/1_87_0/doc/html/boost_asio/reference/io_context.html
Может совсем какой другой язык программирования нужен при таком подходе.
no subject
https://www.google.com/search?q=state+explosion+problem&oq=state+expl&gs_lcrp=EgRlZGdlKgcIAhAAGIAEMgYIABBFGDkyBwgBEAAYgAQyBwgCEAAYgAQyBwgDEAAYgAQyBwgEEAAYgAQyBwgFEAAYgAQyBwgGEAAYgAQyBwgHEAAYgAQyBwgIEAAYgATSAQg5NDkzajBqMagCALACAQ&sourceid=chrome&ie=UTF-8
no subject
no subject
При прямом конвертировании в асинхронный код каждый такой кусок добавляет один state и один event к общей матрице.
(*) Простота и наглядность такого кода одна из главных причин почему люди мучаются с много-поточностью.