Debug di applicazioni multithreading

Un thread è una sequenza di istruzioni in base alla quale il sistema operativo esegue l'allocazione del tempo processore.Ogni processo in esecuzione nel sistema operativo è composto da almeno un thread.I processi composti da più di un thread sono detti multithreading.

I computer multiprocessore, i processori multicore e i processi hyperthreading sono in grado di eseguire contemporaneamente più thread.Se da un lato l'elaborazione parallela di più thread può migliorare notevolmente le prestazioni dei programmi, dall'altro può rendere il debug più difficoltoso poiché introduce la necessità di tenere traccia di più thread.

Il multithreading introduce inoltre nuovi tipi di possibili bug.Accade spesso, ad esempio, che due o più thread debbano accedere alla stessa risorsa, alla quale però può accedere un solo thread alla volta.Deve necessariamente esistere una qualche forma di esclusione reciproca per garantire l'accesso alla risorsa di un solo thread alla volta.Se l'esclusione reciproca non viene eseguita in modo corretto, può venirsi a creare una condizione di deadlock in cui non è possibile eseguire alcun thread.I deadlock possono rappresentare un problema particolarmente difficile da risolvere con il debug.

Visual Studio 2012 fornisce una finestra migliorata di thread , il nuovo thread GPU la finestra, la nuova finestra Espressioni di controllo in parallelo e altri miglioramenti dell' interfaccia utente per eseguire più facilmente il debug multithreading. Il modo migliore per informazioni sulle nuove funzionalità dell' interfaccia di threading consiste nel fare le procedure dettagliate.Vedere Procedura dettagliata: debug di un'applicazione multithreading e Procedura dettagliata: debug di un'applicazione C++ AMP.

In Visual Studio viene inoltre potenti punti di interruzione e punti di analisi, che possono rivelarsi molto utili quando si esegue il debug di applicazioni multithreading.È possibile applicare filtri dei punti di interruzione per inserire punti di interruzione in corrispondenza di singoli thread.Vedere Procedura: specificare un filtro del punto di interruzione

Il debug di un'applicazione multithreading dotata di un'interfaccia utente può essere particolarmente complesso.In tal caso, potrebbe essere necessario eseguire l'applicazione in un secondo computer e utilizzare il debug remoto.Per informazioni, vedere Installazione del debug remoto.

In questa sezione

Sezioni correlate

Vedere anche

Altre risorse

Utilizzo di thread e processi

Installazione del debug remoto