Se parliamo dell'argomento qui, forse è più comodo e potrebbe servire ad altri programmatori che si trovano nella medesima situazione.

Non ho capito bene il legame tra i database DBF, i file INI e i semafori...ad ogni modo.......

Ho a che fare spesso con gli elementi di sincronizzazione di Delphi poichè realizzo frequentemente applicazioni multithread che comunicano con dispositivi esterni e visualizzano dati. Per fare in modo che i differenti thread di esecuzione del programma non interferiscano tra loro quando accedono alle medesime risorse globali, faccio uso dei cosiddetti mutex.

Si tratta di richiamare alcune funzioni API (CreateMutex, ReleaseMutex...) in modo da creare questi oggetti. Lavorando in multithreading, ciascun percorso dell'applicazione deve cercare di "prendere" il mutex prima di accedere alle risorse globali; al termine del loro uso, il mutex viene rilasciato e reso disponibile ai thread rimanenti che possono prenderne a loro volta il possesso e elaborare nuovamente le variabili globali dell'applicazione.

Da quel che ricordo, mi sembra che tu abbia avuto già esperienza con le funzioni API in genere, quindi credo che tu possa comprendere benissimo il funzionamento del meccanismo semplicemente leggendo la Guida in Linea di Delphi.

Oltre ai mutex, Windows offre anche i cosiddetti semaphores: sono molto simili ai mutex, ma incorporano una specie di contatore.

Sinceramente, non ho ben capito l'ambito in cui intendi far uso di queste strutture di sincronizzazione, quindi non posso dirti se funzioneranno egregiamente. Magari scrivi qualche indicazione in più.

Per quanto riguarda i database, credo che le librerie di accesso ai dati abbiano già al loro interno dei meccanismi di blocco/sblocco di singoli record e/o colonne quando vengono modificati da più applicazioni contemporaneamente. Potresti forse contemplare il passaggio ad un formato di database più robusto di quello che stai utilizzando ora.

Se hai bisogno di altre indicazioni, scrivi.

Ciao!