Hello
It seems that opening the same file multiple times (one writer
and multiple readers) is not supported at least on *nix with
GHC. I want to use one Handle to use append data till the
end of the file while other Handles perform random access
IO with seeks on the file.
Sharing the same Handle for all the threads is not possible
since they perform seeks and may thus mess each other up.
Hiding the Handle behind a mutex would limit concurrency
more than I like.
Thus I wanted to open multiple Handles to the file, but
this seems quite hard. My best guess is to create a function
like:
#ifdef mingw32_HOST_OS
openUnlocked fn mode = openBinaryFile fn mode
#else
openUnlocked fn mode = withMVar mutex $ do
h <- openBinaryFile fn mode
fd <- handleToFd h
unlockFile $ fromIntegral fd
return h
{-# NOINLINE mutes #-}
mutex = unsafePerformIO $ newMVar ()
#endif
Is there really no simpler solution?
- Einar Karttunen