Synchronization

6 Ott

La programmazione multi-threading dopo il classico esempio “Hello world” sembra la soluzione ottimale per molti dei problemi quotidiani dei nostri software ad un costo tutto sommato accettabile: dobbiamo isolare il codice da eseguire in parallelo costruendo un po’ di delegate e ricordarci di usare i lock opportuni se il codice “parallelizzato” accede a variabili condivise.

Purtroppo però quando si ricorre all’utilizzo della programmazione concorrente i problemi non si fermano qui. Un’altro importante capitolo, e non ceto semplice, è quello relativo alla sincronizzazione dei diversi thread che operano in concorrenza.

Lo scenario più semplice lo troviamo quando abbiamo 2 thread: il primo lancia il secondo e resta in attesa che il secondo termini il suo lavoro. Ma spesso le cose non sono così semplici. Quando le operazioni da eseguire in contemporanea sono molte la faccenda si può complicare parecchio. Quando poi l’esecuzione di una operazione dipende dal termine di altre operazioni concorrenti che al loro volta sono il risultato di altre operazioni asincrone ed in mezzo a tutto questo si inseriscono anche varibili condivise le cose possono facilmente sfuggire di mano.

In questi casi l’approccio migliore è evitare l’improvvisazione: esistono diversi pattern per affrontare in modo corretto questi scenari. La prima cosa da fare è conoscerli e capire come sono implementati nei linguaggi di programmazione che usiamo quotidianamente.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: