cvs commit: fptools/libraries/base/Data/Array IO.hs fptools/libraries/base/GHC Conc.lhs Handle.hs IO.hs fptools/ghc/rts/win32 AsyncIO.c AsyncIO.h IOManager.c IOManager.h WorkQueue.c WorkQueue.h fptools/ghc/compiler/prelude primops.txt.pp fptools/ghc/includes ...

Sigbjorn Finne <[email protected]> Fri, 21 Feb 2003 00:35:09 -0500 (EST)
Newsgroups gmane.comp.lang.haskell.cvs.hslibs
Message-ID <200302210534.VAA10130__39533.3870932975$1045805707@glass.cse.ogi.edu>
sof         2003/02/20 21:34:17 PST
Sender: [email protected]
Errors-To: [email protected]
X-BeenThere: [email protected]
X-Mailman-Version: 2.0.8
Precedence: bulk
List-Help: <mailto:[email protected]?subject=help>
List-Post: <mailto:[email protected]>
List-Subscribe: <http://www.haskell.org/mailman/listinfo/cvs-hslibs>,
	<mailto:[email protected]?subject=subscribe>
List-Id: fptools/hslibs CVS commit messages <cvs-hslibs.haskell.org>
List-Unsubscribe: <http://www.haskell.org/mailman/listinfo/cvs-hslibs>,
	<mailto:[email protected]?subject=unsubscribe>
List-Archive: <http://www.haskell.org/pipermail/cvs-hslibs/>
Date: Thu, 20 Feb 2003 21:34:17 -0800

  Modified files:
    libraries/base/Data/Array IO.hs 
    libraries/base/GHC   Conc.lhs Handle.hs IO.hs 
    ghc/compiler/prelude primops.txt.pp 
    ghc/includes         PrimOps.h StgMiscClosures.h TSO.h 
    ghc/rts              HeapStackCheck.hc Linker.c Makefile 
                         PrimOps.hc RtsStartup.c Select.c 
    hslibs/lang          IOExts.hs 
  Added files:
    ghc/rts/win32        AsyncIO.c AsyncIO.h IOManager.c 
                         IOManager.h WorkQueue.c WorkQueue.h 
  Log:
  Asynchronous / non-blocking I/O for Win32 platforms.
  
  This commit introduces a Concurrent Haskell friendly view of I/O on
  Win32 platforms. Through the use of a pool of worker Win32 threads, CH
  threads may issue asynchronous I/O requests without blocking the
  progress of other CH threads. The issuing CH thread is blocked until
  the request has been serviced though.
  
  GHC.Conc exports the primops that take care of issuing the
  asynchronous I/O requests, which the IO implementation now takes
  advantage of. By default, all Handles are non-blocking/asynchronous,
  but should performance become an issue, having a per-Handle flag for
  turning off non-blocking could easily be imagined&introduced.
  
  [Incidentally, this thread pool-based implementation could easily be
  extended to also allow Haskell code to delegate the execution of
  arbitrary pieces of (potentially blocking) external code to another OS
  thread. Given how relatively gnarly the locking story has turned out
  to be with the 'threaded' RTS, that may not be such a bad idea.]
  
  Revision  Changes    Path
  1.16      +2 -4      fptools/libraries/base/Data/Array/IO.hs
  1.13      +40 -1     fptools/libraries/base/GHC/Conc.lhs
  1.15      +102 -17   fptools/libraries/base/GHC/Handle.hs
  1.11      +17 -25    fptools/libraries/base/GHC/IO.hs
  1.25      +19 -1     fptools/ghc/compiler/prelude/primops.txt.pp
  1.100     +5 -1      fptools/ghc/includes/PrimOps.h
  1.46      +4 -2      fptools/ghc/includes/StgMiscClosures.h
  1.30      +13 -1     fptools/ghc/includes/TSO.h
  1.28      +34 -1     fptools/ghc/rts/HeapStackCheck.hc
  1.115     +3 -1      fptools/ghc/rts/Linker.c
  1.79      +8 -0      fptools/ghc/rts/Makefile
  1.104     +51 -1     fptools/ghc/rts/PrimOps.hc
  1.71      +13 -1     fptools/ghc/rts/RtsStartup.c
  1.24      +5 -2      fptools/ghc/rts/Select.c
  1.8       +2 -4      fptools/hslibs/lang/IOExts.hs