È possibile sui sistemi operativi unix (-like) almeno, presumibilmente anche su Windows, anche se la gestione dei file è leggermente diversa e potrebbe richiedere una modalità file specifica (vedere: answer of bizzehdee per i dettagli).
Su un sistema operativo in esecuzione, "file" è in realtà un'entità logica, alcuni stati memorizzati su disco in un determinato momento, ma anche alcune modifiche ancora solo nei buffer del kernel. Quindi, in un certo senso, scrivere in un file non è diverso dalla scrittura al blocco della memoria condivisa, solo l'API è diversa (e nemmeno quella se si usa mmap
).
Ma in breve, basta cercare e scrivere, i vecchi byte nel file vengono sovrascritti. Se due processi scrivono sullo stesso byte sovrapposti, penso che il risultato finale sia indefinito, e in ogni caso qualcosa, che non dovrebbe mai accadere in un sistema funzionante correttamente, e qualsiasi programma che lo fa dovrebbe avere un meccanismo per evitare scritture sovrapposte.
Informazioni sull'accelerazione: dipende da cosa si fa, davvero. Se si esegue solo la scrittura grezza, le cose probabilmente rallenteranno sul disco rigido tradizionale rotante, o il file potrebbe diventare frammentato più facilmente. Su un SSD, probabilmente non c'è il rallentamento, ma neanche l'accelerazione.
D'altra parte, se l'operazione è legata alla CPU e si dispone di più core, e se si eseguono operazioni in parallelo, si otterrà un utilizzo totale della CPU più elevato, quindi l'elaborazione di parti diverse dello stesso file di output in parallelo può accelerare cose, anche molte se c'è molta elaborazione rispetto ai byte scritti sul file.
sì che dovrebbe essere possibile ed è così che funziona il software utorrente .. !! –
Stai parlando di parallelismo fisico? Se parli di parallelismo fisico, pensa a come funziona con un processore single core. – Andrey
Non risolverà il tuo problema di I/O. Funziona se si finisce per richiedere di scrivere sullo stesso file da diversi thread * per risolvere i limiti associati alla CPU *, ma non migliorerà la velocità IO. Se mai, diminuirà leggermente. –