Tue Nov 20 04:10:53 PST 2007  Simon Marlow <[EMAIL PROTECTED]>
  * Move file locking into the RTS, fixing #629, #1109
  File locking (of the Haskell 98 variety) was previously done using a
  static table with linear search, which had two problems: the array had
  a fixed size and was sometimes too small (#1109), and performance of
  lockFile/unlockFile was suboptimal due to the linear search.
  Also the algorithm failed to count readers as required by Haskell 98
  (#629).
  
  Now it's done using a hash table (provided by the RTS).  Furthermore I
  avoided the extra fstat() for every open file by passing the dev_t and
  ino_t into lockFile.  This and the improvements to the locking
  algorithm result in a healthy 20% or so performance increase for
  opening/closing files (see openFile008 test).

    M ./GHC/Handle.hs -9 +17
    M ./System/Posix/Internals.hs -3 +11
    M ./base.cabal -1
    R ./cbits/lockFile.c
    M ./include/HsBase.h -1 +2
    R ./include/lockFile.h
_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to