PASW13 - thread (1).pdf
Document Details
Uploaded by EnterprisingAntigorite1792
Tags
Full Transcript
thread Alberto Ferrari Alberto Ferrari – Programmazione di applicazioni SW Ingegneria dei definizione Sistemi Informativi...
thread Alberto Ferrari Alberto Ferrari – Programmazione di applicazioni SW Ingegneria dei definizione Sistemi Informativi o un thread è un flusso di istruzioni, all’interno di un processo, che lo scheduler può fare eseguire parallelamente e concorrentemente con il resto del processo o un thread può essere pensato come una procedura che lavora in parallelo con altre procedure o in un processo possono coesistere più thread o i thread devono essere creati esplicitamente o quando il processo termina tutti i suoi thread terminano forzatamente o durante la vita di un processo i thread vengono attivati e terminati dal programmatore Alberto Ferrari – Programmazione di applicazioni SW Ingegneria dei thread Sistemi Informativi o un processo ha al suo interno almeno un thread di esecuzione o se il flusso esecutivo di un processo viene scomposto in più flussi concorrenti il processo ha al suo interno più thread o i thread di uno stesso processo condividono l'area dati e codice o è necessaria una sincronizzazione nell'accesso ai dati globali o lo scambio di contesto (contest switch) fra thread è più veloce di quello tra processi Alberto Ferrari – Programmazione di applicazioni SW Ingegneria dei ciclo di vita Sistemi Informativi o il sistema operativo gestisce i thread applicando le politiche di scheduling dei processi o un thread può essere in stato di o running o in esecuzione o wait o in attesa del verificarsi di una condizione o sleep o in attesa dell’esecuzione o stopped o ha concluso la sua esecuzione e confluisce con il thread che lo ha originato Alberto Ferrari – Programmazione di applicazioni SW visibilità e Ingegneria dei Sistemi Informativi condivisione variabili o le variabili allocate nello stack sono locali ai thread o i thread non condividono lo stack o le variabili locali ad un metodo sono locali ai thread o le variabili allocate nello heap sono condivise dai thread di uno stesso processo o le variabili globali sono condivise da tutti i thread o attributi statici o di istanza della classe Alberto Ferrari – Programmazione di applicazioni SW Ingegneria dei multi-process vs multi-thread Sistemi Informativi vantaggi thread svantaggi thread tutti i thread di un processo concorrenza invece di condividono lo stesso spazio di parallelismo indirizzamento – necessario gestire la mutua – la comunicazione tra thread è più esclusione delle risorse comuni semplice della comunicazione tra processi velocità context switch – viene mantenuta buona parte dell’ambiente di lavoro Alberto Ferrari – Programmazione di applicazioni SW Ingegneria dei c++11 thread Sistemi Informativi o fino alla versione c++11 lo standard non prevedeva la gestione dei thread o varie implementazioni non standard e spesso non portabili o c++11 propone la classe thread nell’header thread o standardizzazione rispetto alle varie soluzioni precedenti o http://en.cppreference.com/w/cpp/thread/thread o #include Alberto Ferrari – Programmazione di applicazioni SW creazione di un thread (1) Ingegneria dei Sistemi Informativi function pointer il thread t viene creato associando #include // std::cout #include // std::thread ad esso la funzione che deve eseguire void hello() { il thread t esegue il codice std::cout