ASYNC .NET

 async/await

Task<T>

 

Tråd 1

Tråd 2

Tråd 3

Trådpool

HTTP

requests

Tråd 1

Tråd 2

Tråd 3

Trådpool

HTTP

requests

headers

..kod...

databas

..kod..

return

"UTAN AWAIT"

Tråd 1

Tråd 2

Tråd 3

Trådpool

HTTP requests

Tråd 1

Tråd 2

Tråd 3

Trådpool

HTTP requests

?
zZzzZz

Tråd 1

Tråd 2

Tråd 3

Trådpool

HTTP

requests

headers

..kod...

databas

"MED AWAIT"

await

Tråd 1

Tråd 2

Tråd 3

Trådpool

HTTP requests

databas

await

Tråd 2

Tråd 3

Trådpool

HTTP

requests

await databas

..kod..

return

"MED AWAIT"

Tråd 1

Tråd 1

Tråd 2

Tråd 3

Trådpool

HTTP requests

Jättebra för

Databas, HTTP, Filsystem, TCP osv

Inte Jättebra för

Räkna saker i minne och CPU

KAHOOT TIME

https://play.kahoot.it/#/?quizId=55549df0-6439-48bd-aad4-d7d76ac1927d

KOD DEMO

Använd aldrig async void - det kan krasha hela din process.

awaita tasks - om du är intresserad av vad som faktiskt händer i anropet. (annars lever deras data till GC)

 

Använd cancellation Token - om du vill kunna avbryta arbetet utan att starta om processen

 

Starta in för många tasks  samtidigt  - du kan då ta slut på resurser, t.ex. minne/connectionpool till db osv

 

Allt detta i REPO:

github.com/abergs/async-workshop

ASYNC .NET

By abergs

ASYNC .NET

  • 267