Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.656 pregleda

Najnovija ↓

.NET TPL i async/await pattern 12.05.2017. u 10:28 · pre 115 meseci #1
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?
Re: .NET TPL i async/await pattern 12.05.2017. u 10:59 · pre 115 meseci #2
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.
Re: .NET TPL i async/await pattern 12.05.2017. u 11:15 · pre 115 meseci #3
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?
Re: .NET TPL i async/await pattern 15.05.2017. u 12:51 · pre 115 meseci #4
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.
Potpis
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ć
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme