E i thread non possono comunicare tra di loro per "dire" agli altri se un file è occupato?
Se no, potresti provare a mettere un primo carattere che serve solo a dire se il file è occupato o no, ogni thread apre il file in lettura e se il file non è occupato cambia quel valore a 1, se è occupato aspetta.Non so se può funzionare ...