I really don't agree.
Here is a common work pattern: I'm creating a PDF file, reading through
on page 50 of the output, and I notice a typo. I fix it, recompile the
PDF and want to carry on reading.
In xpdf, I just leave the file open, the compiling overwrites it, xpdf
notices the file has changed and reloads it, putting me right back on
page 50 where I was before.
In acroread, I need to remember to close the file manually before
recompiling. Then I need to manually reopen it and manually navigate
back to page 50.
I know which behavior I consider a feature and which a misfeature.
Some of this happens because of the difference in the way Windows and
Unix treat files. In *nix the file exists until there are no more
links to in *and* no one has it open anymore. At that point the OS
deletes it. That makes it possible for an application to
"delete" (aka unlink) a file that another application has open - the
original application continues to access the "old" contents, which
will be retained until there are no references to it.
If the application then monitors the directory, it can see an update,
and then automatically do a close and reopen.
You can get similar behavior out of Windows, but you have to open the
file with FILE_SHARE_DELETE (NT Windows lineage only) to allow another
process to rename or delete the file. And of course an applications
could just not leave the file open (perhaps by loading it in its
entirety, or by copying it to a temporary area). Note that some
applications *do* support this sort of mechanism. Visual Studio, for
example, will notify you if the source file you have open has been
changed by someone else (at the point where you go to save it - it
would be nice if it was earlier).
I don't think either behavior is correct in all cases (locking the
file or permitting the file to be changed while an application has it
open), but my take is that locking the file is more likely the correct
behavior unless the application declares it doesn't care (although
clearly many more Windows applications *should* make such a
declaration). And there are plenty of annoying corner cases.
Consider the VS example: so I've changed the source file as has
someone else - now what?