Create Your Own Event Queue
In this chapter, we’ll create a simple version of an event queue using epoll. We’ll take inspiration from mio (https://github.com/tokio-rs/mio), a low-level I/O library written in Rust that underpins much of the Rust async ecosystem. Taking inspiration from mio
has the added benefit of making it easier to dive into their code base if you wish to explore how a real production-ready library works.
By the end of this chapter, you should be able to understand the following:
- The difference between blocking and non-blocking I/O
- How to use epoll to make your own event queue
- The source code of cross-platform event queue libraries such as mio
- Why we need an abstraction layer on top of epoll, kqueue, and IOCP if we want a program or library to work across different platforms
We’ve divided the chapter into the following sections:
- Design and introduction to epoll
- The
ffi
module - The
Poll
module - The...