Ist es möglich, einen C++-Coroutine-Aufgaben-/Versprechenstyp zu erstellen, der es ermöglicht, get_running_coroutine() a

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Ist es möglich, einen C++-Coroutine-Aufgaben-/Versprechenstyp zu erstellen, der es ermöglicht, get_running_coroutine() a

by Guest » 16 Jan 2025, 04:44

AFAICT gibt es in C++20 oder C++23 keine integrierte Möglichkeit, das Versprechen oder Handle für die Coroutine, die im aktuellen Thread ausgeführt wird, global abzufragen. Jede der Funktionen, mit denen Sie eine Coroutine zurückgeben können, um deren Ausführung auszulösen, z. B. initial_suspend, final_suspend,wait_suspend usw. würden wissen, welche Coroutine gerade ausgeführt wird, und könnten einen thread_local auf das coroutine_handle setzen, das sie zurückgeben, bevor sie zurückkehren. Reicht das aus oder gibt es noch mehr Fälle, über die man sich Sorgen machen muss? Dabei wird davon ausgegangen, dass die Leute im typischen Fall co_await für ihre Aufgabentypen ausführen und nicht manuell ihre eigene Schleife ausführen, die handle.resume() immer wieder aufruft (und wenn es einen Executor/Execution-Agent gäbe). Umschalten zwischen gespeicherten Coroutinen der obersten Ebene, die mit dem Schema zusammenarbeiten würden).

Top