Sobes.tech
Junior — Middle

Kuo skiriasi pagrindiniai užduočių vykdymo būdai: paralelinis ir asinchroninis?

sobes.tech AI

Atsakymas iš AI

Lygiagretus užduočių vykdymas reiškia kelių užduočių vienu metu vykdymą, dažniausiai skirtinguose procesoriaus branduoliuose, kas leidžia pagreitinti apdorojimą tikruoju vienu metu vykdant kodą.

Asinchroninis vykdymas yra būdas organizuoti kodą, kai užduotis pradedama ir ji gali būti vykdoma foniniame režime, o pagrindinis srautas nėra užblokuotas ir gali tęsti darbą. Asinchroniškumas nebūtinai reiškia paralelizmą: užduotis gali būti vykdoma seka, bet be to, kad blokuotų kviečiantį srautą.

Pavyzdys C#:

// Asinchroninė funkcija, kuri neužblokuoja srauto
async Task<string> DownloadAsync(string url) {
    using var client = new HttpClient();
    return await client.GetStringAsync(url);
}

// Kelios užduotys vykdomos lygiagrečiai
var tasks = new[] {
    Task.Run(() => DoWork(1)),
    Task.Run(() => DoWork(2))
};
await Task.WhenAll(tasks);

Santrauka:

  • Parallelizmas — tikras vienu metu vykdymas procesoriaus lygyje.
  • Asinchroniškumas — būdas neblokuoti srautą, leidžiantį vykdyti kitas operacijas, kol užduotis baigiasi.