La programmazione Multithreading

La programmazione multithreading è un paradigma di sviluppo che permette di eseguire più sottoprocessi in parallelo. E' anche detta programmazione concorrente.

Cos'è un thread? Un thread è un sottoprocesso lanciato da un processo principale. L'esecuzione del thread è indipendente dal processo che "padre" l'ha lanciato.

In un programma ci sono diverse operazioni indipendenti che potrebbero essere eseguite contemporaneamente, ossia in parallelo.

Queste operazioni possono essere gestite con più efficienza in multithreading.

    Come funziona il multithread

    Un programma tradizionale esegue le operazioni o task in sequenza, dall'inizio alla fine.

    L'elaborazione avviene in un unico processo.

    un programma tradizionale viene eseguito in un processo

    Pertanto, viene eseguito un task alla volta ( batch mode ).

    Gli altri restano in coda di attesa.

    il diagramma GANTT con i tempi di esecuzione di un programma composto da quattro task

    Per ridurre i tempi di esecuzione posso usare il multithread.

    Il programma principale esegue contemporaneamente alcuni task come sottoprocessi ( thread ).

    il multithreading ( esempio e spiegazione )

    In questo modo, possono essere eseguiti dal processore senza attendere la coda di attesa del programma.

    un esempio dei tempi di esecuzione in multithreading

    Esempio. Nell'esempio precedente il tempo di esecuzione del programma in multithreading è T1. Se il programma eseguisse i task in sequenza il tempo di esecuzione sarebbe T2. Circa quattro volte superiore.

    A cosa serve il multithreading

    Il tempo di esecuzione e la complessità temporale del programma si riduce.

    In pratica, il programma termina l'elaborazione dati in minore tempo.

    Nota. Ovviamente, le operazione gestite con i thread devono essere indipendenti dalle altre. In caso contrario, se ci fosse una qualche dipendenza, è opportuno programmare anche un sistema di sincronizzazione dei thread.

    Pro e contro della programmazione multithreading

    Uno dei punti di forza della programmazione multithreading è la complessità temporale.

    Vanno però considerati anche alcuni handicap.

    In particolar modo, l'esecuzione di un programma in multithreading è più complessa da controllare o monitorare, perché i sottoprocessi (thread) sono eseguiti in background rispetto al processo "padre".

    In caso di errore o malfunzionamento di un sottoprocesso è più difficile accorgersene.

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base
    1. La programmazione
    2. Gli algoritmi
    3. Il linguaggio macchina
    4. Cos'è uno pseudocodice
    5. I programmi informatici
    6. Le variabili
    7. Gli array
    8. Le espressioni
    9. Le strutture di controllo
    10. Le routine
    11. Le funzioni