Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.

Aktivity
Avatar
Miroslav Holubek:8.8.2022 8:29

Ahojte,

čaká ma pohovor, kde bude toto ako jedna z otázok
googloval som veľa, ale nenájde sa tu niekto, kto by vedel ako najlepšie túto otázku zodpovedať? 😀

Zkusil jsem: google 😀

Chci docílit: otázka na pracovný pohovor

 
Odpovědět
8.8.2022 8:29
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:8.8.2022 11:12

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.

 
Nahoru Odpovědět
8.8.2022 11:12
Avatar
Petr Jílek
Člen
Avatar
Petr Jílek:8.8.2022 12:11

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.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
8.8.2022 12:11
Avatar
Miroslav Holubek:9.8.2022 11:14

dakujem, presne tak som predpokladal ze by to mohlo byt, ale chcel som si potvrdit ci mi nieco neuslo 😀

 
Nahoru Odpovědět
9.8.2022 11:14
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.