&gt; This model is not unique to Windows, rather most non POSIX OSes.<p>You could also point out that the hardlink&#x2F;ref-count concept is not unique to POSIX and is present on Windows.<p><a href="https:&#x2F;&#x2F;msdn.microsoft.com&#x2F;en-us&#x2F;library&#x2F;windows&#x2F;desktop&#x2F;aa363860(v=vs.85).aspx" rel="nofollow">https:&#x2F;&#x2F;msdn.microsoft.com&#x2F;en-us&#x2F;library&#x2F;windows&#x2F;desktop&#x2F;aa3...</a><p>&gt; Now replace the contents file being worked on or delete it, in the context of a multi-process application, that passes the name around via IPC. ...<p>Sure... if you depend on passing filenames around, removing them is liable to cause problems. The system I mentioned before worked as well as it did for us, precisely because the filenames didn&#x27;t matter that much. (We had enough design flexibility to design the system that way.)<p>That said, we did run into minor issues with the Windows approach to file deletion. For performance reasons, we mapped many of our larger files into memory. Unfortunately, because we were running on the JVM, we didn&#x27;t have a safe way to unmap the memory mapped files when we were done with them. (You have to wait for the buffer to be GC&#x27;ed, which is, of course, a non-deterministic process.)<p><a href="http:&#x2F;&#x2F;bugs.java.com&#x2F;view_bug.do?bug_id=4724038" rel="nofollow">http:&#x2F;&#x2F;bugs.java.com&#x2F;view_bug.do?bug_id=4724038</a><p>On Linux, this was fine because we didn&#x27;t have to have the file unmapped to delete it. However, on our Windows workstations, this kept us from being able to reliably delete memory mapped files. This was mainly just a problem during development, so it wasn&#x27;t worth finding a solution, but it was a bit frustrating.