In a previous post we discussed Folly futures where we introduced semi-futures and executors. Then in Asynchronous I/O Overview among other things we covered the libevent library.
In this post we want to delve into the executors. One of them being the IO executor which leverages libevent. So while reading those two posts is not strictly required, it’s highly recommended for the bigger picture.
Carl Runge was a German mathematician who, and among other things, is known for a result concerning the approximation of holomorphic functions. This result is know as the Runge’s approximation theorem and we’ll study its proof in this post.
Fun fact: Karl Weierstrass was one of Runge’s advisors.
In this post I wish to do an overview of the different asynchronous I/O solutions, primarily on Linux.
We’ll start with blocking I/O, then explore a few different ways to perform non-blocking I/O such as busy loops, select()
, epoll()
and finally cover the library libevent
.
In this post I wish to cover futures in the Folly library [2]. I’ve discussed C++ futures in a previous post, but Folly futures are slightly different, so this post aims to cover the differences. It’s highly recommended to familiarize yourself with C++ futures first.
The reason for studying Folly futures is because I want to study Folly coroutines and they make use of Folly futures and related mechanims such as executors, so I thought it would be beneficial to cover them separately.
Previously we learned about the ELF file used by Linux operating systems. There, we briefly covered the dynamic linker which is responsible for loading shared libraries and that they’re also encoded as ELF files.
In this post we’ll study shared libraries in more details. Knowing about ELF is not strictly necessary for this, but I would recommended reading the ELF post to fully follow some of the discussions.
Visit archive to see all posts...