Odpověď na názor

Odpovídáte na názor ke článku Zamyšlení se nad korutinami v C++20.

  • 28. 4. 2025 12:09

    Ondřej Novák

    Ahoj, dík za reakci

    Metoda await_suspend implementuje co_await. Ten operator pouze volá postupně ty tři funkce jak jsem napsal, přičemž await_suspend oznamuje awaiteru že korutinu uspal, tady máš její handle a teď rozhodni co dál. V jiném jazyce by se to jmenovalo 'on_suspend' nebo 'after_suspend'

    Awaiter pak může buď říct, že řízení se má vracet volajícímu, nebo dodat handle jiné korutiny, která bude pokračovat, nebo klidně může to přijaté handle vrátit což způsobí okamžité probuzení právě uspané korutiny, to se může hodit, když se mezitím async operace dokončí.

    Dokonce je povoleno vlézt do nějaké hluboké rekurze a v rámci ní zavolat nad handle resume.

    Prostě await_suspend je notifikace o tom, že korutina je uspaná. Já často teprve teď zahajuji async operaci protože mám jistotu, že kód korutiny nemá šanci mi do exekuce zasáhnout takže pak třeba nepotřebuji zámek