Sobes.tech
Junior — Middle

Aký je rozdiel medzi vláknom (thread) a úlohou (task) v kontexte asynchrónneho programovania?

sobes.tech AI

Odpoveď od AI

V kontexte C# a asynchrónneho programovania je vlákno (thread) systémovým objektom operačného systému, ktorý vykonáva kód paralelne s inými vláknami. Vlákna sú spravované plánovačom OS a majú vlastný zásobník a kontext vykonávania.

Úloha (Task) je abstrakcia poskytovaná .NET na jednoduché riadenie asynchrónnych operácií. Task nemusí nutne zodpovedať samostatnému vláknu; môže využívať existujúce vlákno z poolu alebo dokonca nevytvárať nové, ak je operácia asynchrónna (napríklad vstup/výstup).

Hlavné rozdiely:

  • Vlákno je nízkoúrovňový mechanizmus pre paralelizmus.
  • Task je vysokourovňová obálka pre asynchrónne operácie, ktorá uľahčuje správu a skladanie.
  • Task umožňuje písanie asynchrónneho kódu pomocou async/await, bez priamej starostlivosti o vlákna.

Príklad použitia Task:

async Task<int> GetDataAsync()
{
    // Asynchrónna operácia, ktorá neblokuje vlákno
    await Task.Delay(1000);
    return 42;
}