Boost logo

Boost Users :

From: Vinnie Falco (vinnie.falco_at_[hidden])
Date: 2023-12-06 15:10:20


On Wed, Dec 6, 2023 at 6:19 AM Keith Bennett via Boost-users <
boost-users_at_[hidden]> wrote:

> "If only there was something like that" sounds snarky to me and doesn't
> answer the question at all.
>

You are right about that but honestly it is irresistible for me to go for
the obvious punchline :)

For those that don't know, I am referring to "callbacks."

 I want to straight adapt it into coroutines as much as possible.
>

Conditional variables are an anti-pattern in asynchronous code, because the
wait state ties up the calling thread.

Anyway... you could create a `boost::asio::experimental::basic_channel`
using the signature `(void)` and then `co_await` the channel to suspend the
coroutine. Later when you want to wake it up, send a message to the channel
from elsewhere. You will need to be thoughtful about the order of how
things are destroyed if you want to tear down the socket (or corresponding
I/O object). More here:

https://www.boost.org/doc/libs/1_83_0/doc/html/boost_asio/reference/experimental__basic_channel.html

Thanks



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net