← Back

01/14 Exploring Event-Driven I/O

January 14, 2024

Starting from early December of 2024, I've been reading and combing through the gnet repository, trying to study/understand its ins and outs. This is part of my learning journey as an engineer with keen interest in network programming.

The gnet repository was my first take on reading a repository of its kind as it wasn't exactly a smooth learning experience. But did I learn something, ooh my, I saw quite a handful of low-level code and binary tricks I was just seeing for the first time.

On this day, I had the privilege to read a blog series on the topic of synchronous and asynchronous IO, leading up to the discussion of event-io programming. From the early part of today—my waking time is 5am—I read the four parts blog series by Kislay Verma on Asynchronous Programming. The focus was on the operational overhead of IO calls within a system. These IO calls involve network/database IO calls, file IO calls etc. This blog series served as a conceptual exploration of the shortcomings of other synchronous and asynchronous approaches that led up to the event-io approach as provided by the kernel. After reading the articles, then came the evio-lite repository. This is a small scale network implementation on event-io, catering for only epoll and kevent supported platforms. Next after this repository is evio, still by the same author of evio-lite.

Soon enough, I will be able to share more on the technical part of implementing an event-based io system.