Diskuze: Otázka na pracovný pohovor - Task vs Thread
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
To je dneska slozite. Dneska je to tak, ze mas v pc 4 cpu jadra, 16 gpu jader a nejake dalsi procesory. Kazdy ma moznost vlaknovat (thread) a ovladace umoznuji obcas vyuzivat vykon vsech procesoru.
Zalezi pak na tom, jak mas napsany program.
Program, ktery je dobre rozepsany na vlakna muze lepe rozlozit zatez a skoncit
driv nez program, ktery ceka az se vykona jina cast tehoz programu.
Bezny program posila intrukce procesoru a sbira vysledky. Kazda cast probiha po
skonceni te prvni.
Ten vlaknovy ma casti programu, ktere nemusi cekat na vysledky, rozepsane na
vlakna a kdyz je moznost, tak bezi nekolik vlaken naraz.
Cili, tim task je mysleno to, ze pracujes jen v jednom vlakne. A cekas, az ukol tasku skonci a pak zpracovavas dalsi cast.
Pekny priklad je treba pyramidovy serazovaci algoritmus, takovy ten pavouk zapasu, kdy vitez postupuje do dalsiho kola. Da se takto urcovat nejmensi cislo, treba. Porovnavas vzdy 2 cisla. Takze treba u pole z milion cisel muzes provest 500.000 operaci, vlaken. To samozrejme nejde, limit je podle toho, co dovoli cpu, ale rekneme, ze tam mas 100. Takze program prvni cas udela 100x rychleji, druhou 50x, 25x, 12x... A celkove se dostanes rekneme na trojnasobnou rychlost proti reseni bez vlaken.
Mno podle mě to spíš o určitý úrovni abstrakce. Ve výsledku vše běží v threadu. Thread je nižší úroveň programování (low level abstraction), kdy si explicitně alokuješ zdroje CPU, atd. vytvořením threadu (vlákna). Defacto si na něm pak explicitně stejně pustíš Task (úlohu). U třídy Task (úloha - high level abstraction) neřešíš na kterým threadu proběhne, ale necháváš to plně na system scheduleru. Asi takhle v jednoduchosti bych to viděl. Proto se Task využívá u Async/Await apod. Nikdy přímo thread.
dakujem, presne tak som predpokladal ze by to mohlo byt, ale chcel som si potvrdit ci mi nieco neuslo 😀
Zobrazeno 4 zpráv z 4.