WIP: IO support using io_uring
Add AsyncLibrary providing IO operations which avoid the thread-blocking anomaly using the linux io_uring API. This MR makes !4 (closed) obsolete.
Fixes #2 (closed).
TODO:
-
Use a dedicated thread instead of the main thread maybe? -
Overhaul SimpleDiskAndNetworkTest -
Find and fix the memory leak -
be competetive with burak's epoll implementation. Use !54 (merged) for a high performance IO implementation -
Make API really asynchronous and return a future -
Handle IO requests issued after IO subsystem is terminated -
figure out how to gracefully shutdown -
Don't unblock fibers on partial IO completion (what IO functions are feasable, recv(..., MSG_WAITALL)
) -
Document exported functions -
introduce timeouts to prevent denial-of-service by opening more connections than there are entries in the io_uringThis is nonsense and not how io_uring works.
Edited by Maxim Onciul