From: Thomas Fowlery (thomas.fowlery.yes_at_[hidden])
Date: 2024-08-13 09:36:22


Hi all,

I'm planning to start working on a new Web3 project and I'm trying to
decide how I should approach doing concurrency with C++ and Boost.

It seems like using callback-passing style with Asio has been pretty
popular historically. However, having worked with other modern languages
with first-class async support, this feels a bit primitive.

I've heard about C++20 coroutines and it seems like Boost has a library for
it (Cobalt). However, it's relatively new, so I'm curious if anyone had
experience with it and is it mature for production. I see that Asio also
has coroutine support, so what's the difference?

The third option I'm considering is using fibers. I like this option in
principle because the resulting code is very clean and looks like normal
synchronous code. However, I haven't seen many big examples/projects using
Boost.Fiber with Boost.Asio. Is this something people are doing out in the
wild? Does Asio support Fibers well?

Best regards,
Thomas