C++ isn't so great? Are you kidding me? When was the last time you saw a language with such an ability and performance with network programming? C++ puts the game in another level, and we will be blessed if we ever see a language with its performance and expressiveness again. Clojure breaks records. Rust breaks records. C++ breaks the rules. You can keep your statistics. I prefer the magic.
are these awaitable types going to land in c++23... and executor TS is proposing task types (atleast in libunifex, it is there at progress) are both going to coexist in c++23
Any chance of getting rid of the co_spawns in the hot path? A coroutine pool, however that might be implemented, would eliminate that overhead, most importantly the dynamic allocation of the coroutine frame, for the same reason you want a thread pool rather than to spawn a new thread on every connection.
Since a Coroutine needs to allocate undeterministic amount of memory - you're better of with overriding global new/delete and make a static memory storage in that case. IIRC there were PoCs of providing an allocator to the awaitable as a function parameter, since it can customize allocations in there too.
Huge necropost, and i think you have figured out already, but I’ll leave this here in case anybody stumbles across this, with the same question. It does NOT* use threads internally. On Windows, it uses IOCP, and on Linux, depending on what version the kernel has, it either uses epoll, or io_uring for newer kernels. *It does use a single separate thread for DNS resolutions, started by the first resolution, and on Windows, another single thread for all timers (implementing a timer queue); on Linux it uses timerfd_create() for each timer
Great to see new Asio features demonstrated!
awesome talk. Looking forward to next episode
The most amazing C++ talk I’ve seen recently. Thank you for making this great tutorial! Please keep on making videos on boost::asio!!
more videos please, it is very hard for me to fully comprehend asio without bright minds like yours
It seemed so effortless when you do it Chris! Thank you for amazing piece of technology!
Super good talk. Loved the format with the two of you and the live coding. Really enjoyed it, great work on an awesome framework.
Love it. What a great library. Excellent work
The coroutine version is really neat!
asio is getting better and better
C++ isn't so great? Are you kidding me? When was the last time you saw a language with such an ability and performance with network programming? C++ puts the game in another level, and we will be blessed if we ever see a language with its performance and expressiveness again. Clojure breaks records. Rust breaks records. C++ breaks the rules. You can keep your statistics. I prefer the magic.
Zig supports cross compilation and is more flexible but ight
@@trevortrevose9124 if it Aint C then it aint for me! There's a reason why everything was build up from C
@@sandwich5344 Possibly because C was created before other languages like c++?
There are few videos on ASIO, Now we have a whole channel dedicated to ASIO.
best video as a introduction to asio coroutines!
great job
Amazing talk, although I will admit I don't understand a lot it. Anyway keep up the good work.
Impressive!
are these awaitable types going to land in c++23... and executor TS is proposing task types (atleast in libunifex, it is there at progress) are both going to coexist in c++23
This month should be only for asio library application training, i really need that.
holy shit this is awesome
Any chance of getting rid of the co_spawns in the hot path? A coroutine pool, however that might be implemented, would eliminate that overhead, most importantly the dynamic allocation of the coroutine frame, for the same reason you want a thread pool rather than to spawn a new thread on every connection.
Since a Coroutine needs to allocate undeterministic amount of memory - you're better of with overriding global new/delete and make a static memory storage in that case. IIRC there were PoCs of providing an allocator to the awaitable as a function parameter, since it can customize allocations in there too.
Does io_context spawn any threads internally or does it call epoll/select/... entirely inside the run() method?
Huge necropost, and i think you have figured out already, but I’ll leave this here in case anybody stumbles across this, with the same question.
It does NOT* use threads internally. On Windows, it uses IOCP, and on Linux, depending on what version the kernel has, it either uses epoll, or io_uring for newer kernels.
*It does use a single separate thread for DNS resolutions, started by the first resolution, and on Windows, another single thread for all timers (implementing a timer queue); on Linux it uses timerfd_create() for each timer
@@Traian-Enache Thanks, I actually didn't know about the DNS resolutions!
i got it !!!
Have golang-like channel?
solarized theme....