Asynchronous Programming

Until now, the only way we have seen to achieve concurrency in Rust is to create multiple threads, one way or another, to share the work. Nevertheless, those threads sometimes need to stop and look for something, such as a file or a network response. In those cases, the whole thread will be blocked and it will need to wait for the response.

This means that if we want to achieve a low latency for things such as an HTTP server, one way to do it is by spawning one thread per request, so that each request can be served as quickly as possible even if others block.

As we have seen, spawning hundreds of threads is not scalable, since each thread will have its own memory and will consume resources even if it's blocked. In this chapter, you will learn a new way of doing things by using asynchronous programming.

In this chapter, you will learn about the following:

  • Asynchronous primitives with mio
  • Using futures
  • The new async/await syntax and generators
  • Asynchronous I/O with tokio and websockets
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.118.138.195