Quando si lavora con applicazioni multithread (il multithreading è una tecnica che permette di avere più flussi di esecuzione contemporanei di uno stesso programma) uno degli obiettivi più importanti è sincronizzare l'accesso alle risorse condivise. Prima di affrontare il problema utilizzando quanto ci viene messo a disposizione dal .Net Framework 2.0 e superiori, torniamo alle origini, partendo dalle definizioni di programma, processo e thread. Un programma è composto dal codice oggetto, la traduzione del codice sorgente in linguaggio interpretabile dalla macchina, e può essere costituito da uno o più file. Durante l'esecuzione, il programma rimane immutato. Il processo è l'entità...