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
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 51 190×
Přečteno 24 017×
Přečteno 22 904×
Přečteno 21 069×
Přečteno 17 807×