Názor ke článku Knihovna libcoro - korutiny pro C++20 (revize) od Ondřej Novák - Jde převést future na shared_future na straně volajícího,...

  • 27. 3. 2024 6:15

    Ondřej Novák

    Jde převést future na shared_future na straně volajícího, tedy funkce vrací future ale já chci tam dat shared_future, tak mohu. Akorát je problém v tom, že to nejde udělat bez move operace, protože v tu dobu už někde existuje reference na již existující instanci. Takže to jde udělat jediné tak, že shared_future inicializuju lambdou která vrací future. Využívá se toho, ze shared_future si necha takto zinicializovat interni instanci future která se pak sdílí

    Absolutně v tomhle systému nejde použít jakékoliv interface, protože v tu chvíli tam mám heap alokace

    Deferred future nemusí nutně být blocking, on ten odložený výpočet může predstavovat jen jeho zahájení a dál jede jako future, Deferred future je dokonce potomkem future

    Ta třída je takovým kompromisem kdy autor funkce si je vědom jak se bude obtížně pracovat s výsledkem, pokud by vracel future. Prostě ta informace je o tom, že volající ví, že po návratu z funkce ještě pořád neběží nic paralelně, že si může zvolit ten okamžik spuštění sám podle sebe. A pak je tam ten symetrický transfer, kdy lze takto přepínat korutiny - třeba právě asynchronní generátory