Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

.NET TPL i async/await pattern

[es] :: .NET :: .NET TPL i async/await pattern

[ Pregleda: 1769 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jovanpavlovic777

Član broj: 324940
Poruke: 33
*.dynamic.sbb.rs.



+2 Profil

icon .NET TPL i async/await pattern12.05.2017. u 09:28 - pre 83 meseci
Vec duze vremena uspesno koristim TPL na projektima. Veoma mi je bliska i razumljiva metodologija i tehnologija TPL-a, mozda i zahvaljujuci knjizi Gastón Hillar-a.

Sa druge strane vidim da async/await isto dobija veliku popularnost, samo je meni manje blisko tako pisanje i implementacija (razmisljanje takodje).

Koliko sam shvatio sve sto se nalazi nakon await se zapravo izvrasava u background threadu a callback se izvrsava na sledecoj liniji nakon awaita?

Da li postoji jos benefita u koriscenju async/await u odnosu samo na TPL?
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: .NET TPL i async/await pattern12.05.2017. u 09:59 - pre 83 meseci
Nisam koristio TPL tako da ne mogu da pravim nekakve konkretne paralele sa async/await,
mada, koliko vidim, TPL i async/await se ne bave i ne rešavaju iste stvari.

Citat:

Koliko sam shvatio sve sto se nalazi nakon await se zapravo izvrasava u background threadu a callback se izvrsava na sledecoj liniji nakon awaita?

Nije nužno u drugom thread-u - može a i ne mora, zavisi od implementacije task-a.

Asinhroni task je obećanje da će nešto da se završi u budućnosti.
Kada se to desi, nastavlja se tamo gde se stalo, tj. posle await-a.

Umesto da se piše kod sa callback-ovima koji je jako nezgodono pratiti,
piše se klasičan top-down kod čiji se delovi efektivno izvršavaju asinhrono.
 
Odgovor na temu

jovanpavlovic777

Član broj: 324940
Poruke: 33
*.dynamic.sbb.rs.



+2 Profil

icon Re: .NET TPL i async/await pattern12.05.2017. u 10:15 - pre 83 meseci
Ok hvala na odgovoru.
Slazem se sa tobom i da je lakse pratiti kod jer se nastavlja izvrsavanje nakon awaita.
Meni je doduse mnogo lakse sa Task i zatim sa Task.ContinueWith() da tacno iskontrolisem sta se izvrsava gde i u kom trenutku.
Onda ulancam Taskove i preskacem iz UI threada u background thread, i obrnuto.
Sada koliko vidim to se zapravo skriva i apstrahuje sa async/await zbog preglednosti (mada je meni i Task sam pregledan).
Kako da uradim Parallel.For sa async/await?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6041



+4631 Profil

icon Re: .NET TPL i async/await pattern15.05.2017. u 11:51 - pre 83 meseci
Treba samo napomenuti da await poziv async metoda NIJE asinhroni poziv. To je sinhroni poziv koji odlazi u async samo u specificnim situacijama (IO ili poziv druge vrste sistemskog blocking metoda). Jedini drugi nacin da svoj async metod "nateras" da ode u drugi thread je da pozoves Task.Yield();

U osnovi async/await je kompajlerska mahinacija sa Task.ContinueWith() (kad kazem odlazi u async samo u specificnim situacijama mislim ubaci ContinueWith() ) s tim sto postoji implicitno pracenje konteksta. Druga prednost je sto situacije u kojima imas puno kontinuacija, kad su napisane u a/a maniru mnogo lepse izgledaju.

Parallel.For sa druge strane je task dispatcher, njegova primena je najjaca u situacijama kad imas neko masovno procesiranje nad podacima koje mozes da particionises u nezavisne podsetove. Van toga je cisto silovanje.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: .NET TPL i async/await pattern

[ Pregleda: 1769 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.