Windows permet-il l’écriture simultanée dans un fichier?

J’ai créé un programme c ++ en utilisant Qt qui écrit dans un fichier. Il est probable que ce programme aura plusieurs instances, chaque instance accédant au fichier via un réseau local.

J’utilise QFile::ReadWrite comme options d’ouverture de fichier. Si un processus ouvre le fichier dans ce mode, j’ai constaté que l’autre processus pouvait également l’ouvrir pour l’écriture. J’utilise file.write(text) pour écrire dans le fichier. Que se passerait-il si les deux processus essayaient de le faire exactement au même moment? Est-ce que Windows gère ça?

Je me demande si ré-implémenter en utilisant le CreateFile(...) la fenêtre et en utilisant 0 pour le sharemode est requirejs?

Merci.

Qt est OpenSource, donc ce n’est pas un problème de regarder à l’intérieur (qfsfileengine_win.cpp):

 bool QFSFileEnginePrivate::nativeOpen(QIODevice::OpenMode openMode) { ... // All files are opened in share mode (both read and write). DWORD shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE; ... // Create the file handle. fileHandle = CreateFile((const wchar_t*)fileEntry.nativeFilePath().utf16(), accessRights, shareMode, &securityAtts, creationDisp, FILE_ATTRIBUTE_NORMAL, NULL); 

Ainsi, Qt ne fournit aucune fonctionnalité de partage de fichiers sauf “ne s’en soucie pas”.