So the event-driven architecture has a few great benefits, the catch is that for a low-level implementation, we need to write our code in a completely different style. Let's write an event-driven chat server to illustrate this.
Note that this example will not at all work on Windows as Windows lacks the
poll interface which we will be employing here. There is an older interface, called
select, which Windows does support, however it is slower and more complicated to work with. The event-driven frameworks that we look at later do automatically switch to
select for us though, if we're running on Windows.
There is a higher performance alternative to
epoll, available on Linux operating systems, however ...