Condividi tramite


Oggetti e funzionalità del threading

In .NET Framework sono disponibili diversi oggetti che consentono di creare e gestire applicazioni con multithreading. I thread gestiti sono rappresentati dalla classe Thread. La classe ThreadPool consente di creare e gestire facilmente le attività in background con multithreading. La classe BackgroundWorker svolge esattamente la stessa funzione per le attività che interagiscono con l'interfaccia utente. La classe Timer esegue le attività in background a intervalli regolari.

Sono inoltre disponibili alcune classi che sincronizzano le attività dei thread, incluse le classi Semaphore e EventWaitHandle introdotte con .NET Framework versione 2.0. Il confronto tra le funzionalità di queste classi è riportato in Cenni preliminari sulle primitive di sincronizzazione.

In questa sezione

  • Pool di thread gestiti
    Viene spiegata la classe ThreadPool, che consente di richiedere a un thread di eseguire un'attività senza doversi occupare della gestione dei thread in modo specifico.

  • timer
    Viene spiegato come utilizzare un Timer per specificare un delegato da chiamare a un'ora specificata.

  • Monitor
    Viene spiegato come utilizzare la classe Monitor per sincronizzare l'accesso a un membro o per compilare i propri tipi di gestione dei thread.

  • Handle di attesa
    Viene fornita una descrizione della classe WaitHandle, la classe base astratta relativa agli handle di attesa degli eventi, dei mutex e dei semafori, che consente l'attesa di più eventi di sincronizzazione.

  • EventWaitHandle, AutoResetEvent, CountdownEvent e ManualResetEvent
    Vengono illustrati gli handle di attesa degli eventi utilizzati per sincronizzare le attività dei thread mediante e l'invio e l'attesa di segnali.

  • Mutex
    Viene illustrato come utilizzare un oggetto Mutex per sincronizzare l'accesso a un oggetto o per compilare meccanismi di sincronizzazione personalizzati.

  • Operazioni interlocked
    Viene illustrato come utilizzare la classe Interlocked per incrementare o decrementare un valore e memorizzarlo in una singola operazione atomica.

  • Blocchi in lettura/scrittura
    Viene definito un blocco che implementa la semantica singolo writer/visualizzatore multiplo.

  • Semaphore e SemaphoreSlim
    Vengono descritti oggetti Semaphore e viene illustrato come utilizzarli per controllare l'accesso alle risorse limitate.

  • Cenni preliminari sulle primitive di sincronizzazione
    Viene eseguito un confronto tra le funzionalità delle classi .NET Framework fornite per il blocco e la sincronizzazione dei thread gestiti.

  • Barriera (.NET Framework)
    Vengono descritti gli oggetti Barrier che implementano il modello di barriera per il coordinamento dei thread nelle operazioni graduali.

  • SpinLock
    Viene descritto SpinLock, un'alternativa più semplice alla classe Monitor per alcuni scenari di basso livello.

  • Token di annullamento
    Viene descritto CancellationToken, un oggetto semplice che può essere utilizzato per implementare l'annullamento cooperativo tra thread.

  • SpinWait
    Viene descritto SpinWait, una primitiva di sincronizzazione di basso livello che esegue uno spin intenso prima di iniziare un'attesa basata sul kernel.

Riferimenti

  • Thread
    Viene fornita la documentazione di riferimento relativa alla classe Thread, che rappresenta un thread gestito, indipendentemente dal fatto che provenga da codice non gestito o sia stato creato in un'applicazione gestita.

  • BackgroundWorker
    Vengono consentite attività in background che interagiscono con l'interfaccia utente, comunicando mediante eventi che si verificano nel thread dell'interfaccia utente.

Sezioni correlate

  • I/O di file asincrono
    Viene descritto in che modo le porte di completamento asincrono I/O utilizzano il pool di thread per richiedere l'elaborazione solo quando viene completata un'operazione di input/output.

  • Task Parallel Library
    Viene descritto l'approccio consigliato per la programmazione multithreading in .NET Framework versione 4 e successive.