[project @ 2005-07-29 20:21:50 by sof]
authorsof <unknown>
Fri, 29 Jul 2005 20:21:50 +0000 (20:21 +0000)
committersof <unknown>
Fri, 29 Jul 2005 20:21:50 +0000 (20:21 +0000)
commitb3de318bd2350bc3558e9e2f1bd3fe8df5b7e0cf
treedeb2c6fa9363184ee270dc86df648181c2213441
parent5ecb44457a28047103132d267ffc80a078819442
[project @ 2005-07-29 20:21:50 by sof]
win32/AsyncIO.c:onIOComplete(), awaitRequests():
  Avoid completion table overflow through the use of
  a semaphore. Worker threads (the producers) wait for a free
  event slot to appear, the RTS thread (consumer) signal slot
  availability once the completion event has been de-queued and
  processed.

  This bug only manifests itself in 'massively concurrent' code
  (>200 threads), where the threads simultaneously engage in IO
  through the async IO layer. conc023 and conc036 in the regression
  test suite are examples of such.

Merge to STABLE.
ghc/rts/win32/AsyncIO.c