In breve: La programmazione concorrente permette a un programma di svolgere più attività nello stesso periodo di tempo.
Cosa significa concorrenza
Un programma normale esegue le istruzioni una dopo l'altra. Quando le attività diventano molte, il computer rallenta.
Con la concorrenza il programma divide il lavoro in parti separate. Queste parti procedono insieme, senza aspettare la fine di ciascuna.
Pensa a una pizzeria. Un cuoco solo prepara una pizza alla volta. Più cuochi, invece, lavorano insieme su pizze diverse.
Come funziona nei programmi
Le parti che lavorano insieme si chiamano thread oppure processi. Ogni thread esegue una sequenza di istruzioni.
Il sistema operativo decide quando far lavorare ciascun thread. Su un processore con più core, i thread possono procedere davvero in parallelo.
Spesso i thread devono usare dati comuni. Se due thread modificano lo stesso dato insieme, possono nascere errori.
Per evitare problemi si usano strumenti di sincronizzazione. Servono a mettere ordine fra i thread che condividono risorse.
Un esempio comune è il lucchetto, detto mutex. Solo un thread alla volta può entrare nella zona protetta.
Esempi pratici
Un browser carica una pagina web. Allo stesso tempo riproduce un video e scarica un file. Sono attività concorrenti.
Una chat mostra i messaggi vecchi mentre ne riceve di nuovi. Senza concorrenza dovresti aspettare ogni volta.
In classe puoi scrivere un piccolo programma con due thread. Uno conta da 1 a 100, l'altro stampa lettere. Vedrai i risultati alternarsi sullo schermo.
Un altro esercizio utile è una coda condivisa. Un thread aggiunge numeri, un altro li legge. Per non perdere dati si usa un lucchetto.
Parole difficili
- Thread: piccola unità di esecuzione dentro un programma.
- Processo: programma in esecuzione con la propria memoria.
- Sincronizzazione: tecnica per coordinare attività che usano dati comuni.
- Mutex: strumento che permette l'accesso a un solo thread alla volta.
- Parallelismo: esecuzione di più attività davvero contemporanea su più core.
- Risorsa condivisa: dato o oggetto usato da più thread insieme.
Riferimenti
- Norma: Riordino degli istituti tecnici
- Obiettivo formativo coperto: ob.tecnico-informatica-telecomunicazioni.tecnologie-progettazione-sistemi-informatici.cl3.programmazione-concorrente.01