wait_in_group
wait_in_group(wg, S) takes a sender S and adds it to the work group wg
(calls wg.add(1)) immediately before it's started and marks it as done
(calls wg.done()) immediately after.
Prototype
template<typename S>
sender wait_in_group(wait_group &wg, S sender);
Requirements
S is a sender.
Arguments
wg- wait group to wait insender- sender to wrap in the wait group
Return value
The value produced by the sender.
Examples
bool should_run() {
/* ... */
}
async::result<void> handle_conn(tcp_socket conn) {
/* ... */
}
/* ... */
tcp_socket server;
server.bind(":80");
server.listen(32);
async::wait_group handlers { 0 };
while (should_run()) {
auto conn = socket.accept();
async::detach(async::wait_in_group(handlers, handle_conn(std::move(conn))));
}
/* wait for all connections to terminate */
handlers.wait();