C# async/await - způsob zápisu, nebo funkcionalita? rubrika: Programování: .Net
Pořád jsem v C# pouze mírně pokročilý začátečník, takže omluva za dotaz, je-li blbý.
Mějme v rámci konzolové aplikace, dejme tomu, tenhle kousek kódu:
static async void Foo() { byte cislo1 = await TestTask1(1); Console.WriteLine("Číslo 1 je {0}", cislo1.ToString()); byte cislo2 = await TestTask2(1); Console.WriteLine("Číslo 2 je {0}", cislo2.ToString()); } static Task<byte> TestTask1(byte cislo) { return Task.Run(() => { return cislo; }); } static async Task<byte> TestTask2(byte cislo) { return await Task.Run(() => { return cislo; }); }
A dotaz zní, má-li async/await v TestTask2 nějaký význam, nebo jde jen o způsob zápisu aby bylo jasné, že jde o Task asynchronní?
Díky.
V tvojom kode nie.
async/await ma vyznam pri IO operaciach, ked procesor caka napriklad na sietovu kartu, disk, databazu... vdaaka nim neblokujes thread poll ani nevytvaras nove thready.
Sam o sebe async/await nerobi kod asnychronny, ani nepracuje s vlaknami.
No async await je owerhead vtedy ak robis nieco na CPU, vtedy ich nepouzivaj a uz vobec nie s Task.Run, to je antipatern.
Tu je prednaska o tom ako to funguje https://www.youtube.com/watch?v=fHcEt1b_ifw
Pro plný přístup na Devel.cz se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře