THREAD CON CPP IN QT CREATOR

[Total: 1    Average: 5/5]
l’uso di qthread permette di realizzare applicazioni con thread in QT creator


La specifica implementazione dei thread e dei processi dipende dal sistema operativo, ma, in generale, si può dire che un thread è contenuto all’interno di un processo, e che diversi thread contenuti nello stesso processo condividono alcune risorse (lo spazio d’indirizzamento del processo), mentre processi differenti non condividono le loro risorse. Un thread è composto principalmente da tre elementi: program counter, valori nei registri e stack. Le risorse condivise con gli altri threads di uno stesso task sono essenzialmente la sezione di codice, la sezione di dati e le risorse del Sistema Operativo.

Nelle architetture a processore singolo, quando la CPU esegue alternativamente istruzioni di thread differenti, si parla di multithreading a divisione di tempo. La commutazione fra i thread avviene di solito tanto frequentemente da dare all’utente l’impressione che tutti i task siano eseguiti contemporaneamente. Nelle architetture multi-processore i thread vengono invece realmente eseguiti contemporaneamente, ciascuno su un distinto processore.

Quando delle azioni sono effettuate a livello di thread tutta l’informazione di stato riguardante l’esecuzione viene tenuta in strutture dati a livello di thread. Ci sono, comunque, molte azioni che influiscono su tutti i thread di un processo e che il sistema operativo deve gestire a livello di processo. A questo genere di azioni appartengono la sospensione e la terminazione di un processo. In entrambi i casi, la rimozione dalla memoria dello spazio di indirizzamento si ripercuote su tutti i thread che condividono quello spazio di indirizzamento e che entrano quindi tutti insieme nello stato di sospensione o di terminazione.

Come i processi anche i thread hanno uno stato di esecuzione e possono sincronizzarsi tra loro. Gli stati di un thread sono readyrunning e blocked.

Ci sono quattro operazioni di base associate ai cambiamenti di stato di un thread. Creazione: quando un processo viene creato, si crea anche un thread. Successivamente un thread può creare un altro thread a cui deve fornire il puntatore delle istruzioni e gli argomenti: vengono creati un contesto per i registri e gli stack, e il nuovo thread è messo nella coda dei ready. Blocco: quando un thread deve aspettare un particolare evento entra in stato blocked (salvando i registri utente, il program counter e lo stack pointer) Sblocco: quando si verifica l’evento per cui il processo era stato posto in stato blocked, il thread passa allo stato ready. Terminazione: quando un thread completa il suo compito, il suo contesto per i registri e i suoi stack vengono deallocati.

C++ QT 28 – QTHREAD PART 1 CREATING A THREAD

C++ QT 29 – QTHREAD PART 2 THE PRIORITY

C++ QT 30 – QTHREAD PART 3 THE QMUTEX

C++ QT 31 – QTHREAD PART 4 THREADS WITH A GUI
  • iElettronica

    ottimi video molto utili per la crezione di GUI interattivi. Quasi tutti i progetti con GUI presentano thread indipendenti. Se avete bisogno di altre informazioni fatemi sapere