[CLOSED] How can i make tokio event loop?

I saw a post[1] of making asynchronous chat server with nginx like architecture. But libraries used there are outdated. So i want to make something similar but using tokio. In that post autor made mio eventloop, but i can't see any events in tokio, even tought tokio described as event driven library. How can i implement/use eventloop similar way to original post, nginx like?

[1]Rust in Detail: Writing Scalable Chat Service from Scratch)

I wrote a simple chat server with Tokio. You can find it here: https://github.com/darksonn/telnet-chat

Other than that, I recommend checking out the Tokio tutorial on the Tokio website.

3 Likes

Thank you for prompt reply. I'll definetely take a look at your project. So the idea is to use channels in lieu of event polls?

UPD: I mean, is it possibly fully replace event mechanic by a channels in functional aspect?

The thing to understand is that Tokio isn't an event loop as you might understand it from other languages. It uses the async/await feature which lets you write imperative code, and then Rust automatically converts it into code using an invisible event loop.

If you wanted to access the event loop directly, you would need to use mio instead, and you wouldn't be able to use async/await.

3 Likes

Does async/await distribute the load on the cores evenly? I am just afraid of the imbalance of this approach.

If you use the multi-threaded Tokio runtime, then it will perform work stealing to ensure that all cores have work.

2 Likes

Thank you a lot, that's all i needed to know