Se ci sono più thread che generano dati indipendentemente l'uno dall'altro, scrivere in file separati può essere davvero una buona opzione. Ci sarà ancora un po 'di blocco sotto il cofano dal momento che il Sistema Operativo ha bisogno di mantenere il filesystem coerente, ma dovrebbe essere migliore della scrittura su un singolo file con blocco manuale o scrittura su output standard (che ha sincronizzazione interna). Analogamente, se si ha accesso ad un archivio online a cui è possibile accedere tramite la rete, è possibile inviare i dati indipendentemente da ogni thread.
Ma c'è un grande "ma". Se si scrivono molti dati (più di diversi MB / s, a seconda delle specifiche della macchina), il proprio file system potrebbe non essere in grado di tenere il passo. In tale situazione, il collo di bottiglia sarà il tuo file system e non i blocchi nell'app. Se ciò accade, potresti effettivamente stare meglio con un singolo file e bloccare poiché le scritture simultanee in più posizioni potrebbero caricare più carico sul file system e sul disco piuttosto che scrivere in un singolo punto. Quindi tutto dipende e qualsiasi numero di scritture concorrenti tra uno e molti potrebbe essere ottimale. La soluzione migliore sarebbe quella di rendere parametrizzabile il numero di scritture concorrenti e di confrontare le prestazioni finali dell'applicazione per diversi valori.