Asio: asio::awaitable übergibt die Ausführung an andere bereite AufgabenC++

Programme in C++. Entwicklerforum
Anonymous
 Asio: asio::awaitable übergibt die Ausführung an andere bereite Aufgaben

Post by Anonymous »

Bedenken Sie den Code

Code: Select all

#include 
asio::awaitable doit(char ch)
{
for (int i = 0; i < 5; ++i) {
fprintf(stderr, "%c %d\n", ch, i);
asio::steady_timer t(co_await asio::this_coro::executor);
t.expires_after(std::chrono::seconds(0));
co_await t.async_wait(asio::use_awaitable);
}
}
int main()
{
asio::io_context ctx;
co_spawn(ctx, doit('A'), asio::detached);
co_spawn(ctx, doit('B'), asio::detached);
ctx.run();
return 0;
}
Was die folgende Ausgabe erzeugt:

Code: Select all

A 0
B 0
A 1
B 1
A 2
B 2
A 3
B 3
A 4
B 4
Das macht genau das, was ich will, aber mit dem Hack von steady_timer, der nach „0“ Sekunden abläuft.
In meiner Anwendung möchte ich, dass Aufgaben mit langer Laufzeit (einige ms) an mehreren Punkten ausgeführt werden und ausstehenden Aufgaben im io_context ausgeführt werden können.
Gibt es einen idiomatischeren Ansatz als diesen steady_timer-Hack?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post