Upload
baglinim
View
269
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Slide utilizzate durante il DotNetToscana - Asynchronous Programming Lab (http://www.dotnettoscana.org/asynchronous-programming-lab.aspx)
Citation preview
Async Programming Lab
Matteo Baglini Software Architect/Developer, FreelanceEmail: [email protected]: http://www.makesimple.net Blog: http://blogs.ugidotnet.org/bmatte
2
«.NET: applicazioni veloci come la luce. Scopri come
velocizzare le applicazioni con la programmazione
asincrona» FALS
O
3
«Programmazione asincrona e
programmazione parallela sono sinonimi»
FALS
O
4
Windows
5
Thread
6
Thread Madness
7
Modern CPU
Asynchronous
9
Parallel
CPU-Bound
CLR Thread Pool - UserWorkItem
Worker Thread 1
Worker Thread N
…
Program Thread
GlobalQueue(FIFO)
Work1Work2
ThreadPool
CLR Thread Pool - Tasks
Worker Thread 1
Worker Thread N
…
Program Thread
GlobalQueue(FIFO)
LocalQueue
1(LIFO)
LocalQueue
N(LIFO)
…
Task 1Task 2Task 3
Task 5Task 4Task 6
ThreadPool
I/O-Bound
14
WindowsUser-mode
WindowsKernel-mode
.NET / CLR
Synchronous I/Ovar readed = fileStream.Read(buff, 0, buff.Length);
ReadFile(hFile, Buff, BUFFSIZE-1, &dwReaded, NULL);
Windows I/O Subsystem
Thread block, waits for I/O completion.
Hardward does I/O.No threads involved!
15
WindowsUser-mode
WindowsKernel-mode
.NET / CLR
AsynchronousI/OfileStream.BeginRead(buff, 0, buff.Length, cb, null);
ReadFile(hFile, Buff, BUFFSIZE-1, &dwReaded, NULL);
Windows I/O Subsystem
void EndReadCb(IAsyncResult asyncResult) {…}
I/O Completion Ports
ThreadPoolHardward does I/O. No threads involved!
16
App Threading Models
17
while ( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0) {
if (bRet == -1) { // handle error / exit
} else {
TranslateMessage(&msg); DispatchMessage(&msg);
}}
Message Loop
18
Parallel
19
Async/Await
20
Coroutine
21
WinRT
22
23
Async WinRT API
24
• Principio:• Non bloccare i Thread.
• Pattern:• Operazioni I/O-bound:
conviene sempre effettuarle in asincrono.
• Operazioni CPU-bound: dipende dal contesto e dal costo (computazionale).
In chiusura…
25
Async Programming Model Soup
ModelPrimary
UseSecondary
Use
Parent/
Child
Progress
Cancel Wait Timeou
t
Return/Exceptio
n
QueueWorkItem
CPU Sync I/O No No No No No No
APM I/OCPU via BeginInvoke
No No No Si No Si
EAP I/OCPU via BackgroundWorker
No Alcuni Alcuni No No Si
TAP CPUSync I/O orFromAsync
Si NoSi, via Cooperative Cancellation
Si Si Si
Timer CPU Sync I/O No NoSi, viaDispose
No Si No
Libri
27
Risorse
• The Task-based Asynchronous Pattern• Asynchronous Programming in C
# and Visual Basic• Diving deep with WinRT and await
• http://blogs.msdn.com/b/pfxteam• http://blogs.msdn.com/b/dotnet/
• 101 Async Samples
Async Rocks!