Odpovídáte na názor ke článku Zamyšlení se nad korutinami v C++20.
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
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 57 599×
Přečteno 27 720×
Přečteno 26 403×
Přečteno 24 367×
Přečteno 22 864×