|
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