*
* (c) sof, 2002-2003.
*/
+
+#if !defined(THREADED_RTS)
+
#include "Rts.h"
#include "RtsUtils.h"
#include <windows.h>
#define MAX_REQUESTS 200
static CRITICAL_SECTION queue_lock;
-static HANDLE completed_req_event;
-static HANDLE abandon_req_wait;
+static HANDLE completed_req_event = INVALID_HANDLE_VALUE;
+static HANDLE abandon_req_wait = INVALID_HANDLE_VALUE;
static HANDLE wait_handles[2];
static CompletedReq completedTable[MAX_REQUESTS];
static int completed_hw;
}
void
-shutdownAsyncIO()
+shutdownAsyncIO(rtsBool wait_threads)
{
- CloseHandle(completed_req_event);
- ShutdownIOManager();
+ ShutdownIOManager(wait_threads);
+ if (completed_req_event != INVALID_HANDLE_VALUE) {
+ CloseHandle(completed_req_event);
+ completed_req_event = INVALID_HANDLE_VALUE;
+ }
+ if (abandon_req_wait != INVALID_HANDLE_VALUE) {
+ CloseHandle(abandon_req_wait);
+ abandon_req_wait = INVALID_HANDLE_VALUE;
+ }
+ if (completed_table_sema != NULL) {
+ CloseHandle(completed_table_sema);
+ completed_table_sema = NULL;
+ }
+ DeleteCriticalSection(&queue_lock);
}
/*
ResetEvent(abandon_req_wait);
}
+#endif /* !defined(THREADED_RTS) */