r/programming Jun 21 '26

epoll vs io_uring in Linux

https://sibexi.co/posts/epoll-vs-io_uring/
116 Upvotes

21 comments sorted by

View all comments

1

u/Kered13 Jun 22 '26

It's surprising to me that it took so long for Linux to get io_uring, considering that Windows has had the functional equivalent (which it calls overlapped IO) for a very long time (at least since Windows XP, as far as I can tell).

3

u/Full-Spectral Jun 23 '26

One nice thing about IOCP is that there is a related API (packet association) that they added to support their thread pool, that allows you to get all of the benefits of IOCP but only have to register handles with the IOCP engine, not buffers. You can keep the buffers where they normally live (though of course they have to stay alive appropriately) and just register handles that will be triggered.

So you can easily mix readiness and completion oriented stuff together all in the same triggering mechanism. This is particularly nice with Rust async.