[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.