di: Sosan Abou Assalè 14 Febbraio 2007
Il .NET Framework fornisce la possibilità di creare applicativi multithreaded. In questo articolo viene spiegato il concetto di Multithreading e le tecniche per poter gestire i thread in maniera efficace e semplice. In particolare, vedremo come eseguire una procedura in un thread separato aggiungendo questo thread ad un thread pool.
Il Multithreading è quella caratteristica (tipica dei sistemi operativi) che permette ad una applicazione di eseguire una o più azioni (thread) in parallelo.
Nel caso specifico è utile se vogliamo evitare che il thread corrispondente ad una richiesta, venga bloccato finché questa venga portata a termine. In una applicazione "Multithreaded" possiamo svolgere più attività (o task) contemporaneamente: l'azione successiva può essere svolta senza dover attendere che quella precedente venga completata. Ad esempio nei programmi di elaborazione testi (come Word), mentre digitiamo il testo viene svolto anche il controllo dell'ortografia e il salvataggio del documento ad intervalli regolari di tempo.
Per comprenderne il funzionamento esaminiamo un esempio con un singolo thread.
Listato 1. Codice che non sfrutta il multithreading
Class _Default Inherits System.Web.UI.Page
Public Sub Sub1()
Dim i As Integer
For i = 1 To 5
Response.Write("Sub1() </br>")
Next
End Sub
Public Sub Sub2()
Dim i As Integer
For i = 6 To 10
Response.Write("Sub2() </br>")
Next
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Sub1()
Sub2()
Response.Write("</br> ---- FINE ----")
End Sub
End Class
Figura 1. Esecuzione sequenziale
La Sub2() viene eseguita solamente quando Sub1() ha completato la sua esecuzione. Questo perchè quando una procedura o una funzione viene richiamata il controllo dell'esecuzione viene trasferito all'interno della funzione (o procedura).
Quando termina l'esecuzione della procedura, l'applicazione riparte dalla linea di codice successiva alla linea che ha richiamato la procedura.
Utilizzando il Multithreading, possiamo eseguire due thread concorrenti (in parallelo) all'interno della stessa applicazione. Questa tecnica diventa indispensabile quando si eseguono operazioni molto lunghe e laboriose che richiedono elevati carichi di lavoro come:
Se una di queste operazioni, impiega un intervallo di tempo che viene considerato inaccettabile, è buona regola ricorrere al multithreading, altrimenti il thread corrispondente alla richiesta, viene bloccato fin quando la medesima richiesta non viene portata a termine.
In questo modo, l'interfaccia della nostra applicazione non viene bloccata e si possono quindi eseguire altre operazioni, mentre la funzione che richiede tempi di esecuzione lunghi continua ad essere eseguita in background.
È importante ricordare che bisogna prestare la massima attenzione quando si lavora con il multithreading perché in questo tipo di applicazione i bug sono difficili da intercettare e la creazione e la distruzione dei thread possono anche decrementare le performance della nostra applicazione se sono mal gestiti.
Guida Windows Azure Code SnippetsLe migliori pratiche per far girare le applicazioni "in the cloud",... |
Guida ASP.NET MVC Best PracticesUn workflow dettagliato e ricco di suggerimenti pratici per... |
Guida ASP.NET Starter KitUn modo semplice per imparare ad utilizzare le tecnologie Microsoft... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Amministratore di Reti Windows Server 200820 Febbraio 2012 a Milano |
|
Nessun corso previsto |