Junior — Middle
Jaký je rozdíl mezi vláknem (thread) a úkolem (task) v kontextu asynchronního programování?
sobes.tech AI
Odpověď od AI
V kontextu C# a asynchronního programování je vlákno (thread) systémovým objektem operačního systému, který spouští kód paralelně s jinými vlákny. Vlákna jsou řízena plánovačem OS a mají vlastní zásobník a kontext vykonávání.
Task je abstrakce poskytovaná .NETem pro pohodlné řízení asynchronních operací. Task nemusí nutně odpovídat samostatnému vláknu; může využívat existující vlákno z poolu nebo vůbec nevytvářet nové, pokud je operace asynchronní (například vstup/výstup).
Hlavní rozdíly:
- Vlákno je nízkoúrovňový mechanismus paralelismu.
- Task je vysokourovňová obálka pro asynchronní operace, která usnadňuje správu a složení.
- Task umožňuje psát asynchronní kód pomocí async/await, aniž by bylo nutné se přímo starat o vlákna.
Příklad použití Task:
async Task<int> GetDataAsync()
{
// Asynchronní operace, která nezablokuje vlákno
await Task.Delay(1000);
return 42;
}