Tra gli ultimi articoli

pthread, multithread con C++

c++Andiamo il più sinteticamente possibile a vedere come possiamo far svolgere al nostro programma più procedimenti in contemporanea passando da uno stile sequenziale, stile che procede dall’alto verso il basso ad uno stile in multithread, sempre in maniera sequenziale ma in questo caso in contemporanea su più thread. Questo può tornarci utile in caso di software di complessità maggiore del solito.

 

#include <pthread.h>   ///Questa libreria è indispensable e permette il multithread
#include <iostream>
#include <stdio.h>
#include <unistd.h>

using namespace std;   // Per poter usare cout/cin liberamente

////// Prima funzione
// Questa funzione che segue  stamperà all infinito la scritta Hello 

void *funzione1(void*)     
{
     while(true){
     cout << "Hello";
    Sleep(100);
    } 
 }
////// Fine prima funzione

////// Seconda funzione
// Questa funzione che segue stamperà all infinito la scritta Bye

void *funzione2(void*)   
{
     while(true){
     cout << "BYE";
    Sleep(100);
    } 
 }
////// Fine seconda funzione


int main() 
{
    pthread_t t1; //Dichiaro il primo thread
    pthread_t t2; //Dichiaro il secondo thread

    pthread_create(&t1, NULL, &funzione1, NULL);   //Creo il primo thread
    pthread_create(&t2, NULL, &funzione2, NULL);   //Creo il secondo thread


// Mando in esecuzione il primo thread stampando a schermo Hello
    void* result;
    pthread_join(t1,&result);  

// Mando in esecuzione il secondo thread stampando a schermo Bye
    void* result2;
    pthread_join(t2,&result2); 

    }       

}

Molto importante: La libreria pthread non è una libreria inserita di default in MinGW, potrete renderla disponibile aprendo MinGW (dalla 4.5), cercando nelle librerie disponibili non installate la libreria pthread, marcarla ed installarla.

Il numero thread si può aumentare semplicemente aggiungendo una nuova funzione, una nuova dichiarazione thread, una nuova creazione del thread e un nuovo richiamo, ovviamente dovrete cambiare i dati di definizione o il programma giustamente nemmeno sarà compilato.

About Stefano Berardi

Stefano Berardi
''non sono superman... I'm not superman..."