Browse Source

Also call CloseHandle on each thread, as well as on the event so as to not leak thread handles.

tags/v0.3.6^2
Erik M. Bray 7 years ago
parent
commit
8ba9e2a61a
2 changed files with 6 additions and 1 deletions
  1. +5
    -0
      driver/others/blas_server_win32.c
  2. +1
    -1
      exports/dllinit.c

+ 5
- 0
driver/others/blas_server_win32.c View File

@@ -461,13 +461,18 @@ int BLASFUNC(blas_thread_shutdown)(void){
SetEvent(pool.killed);

for(i = 0; i < blas_num_threads - 1; i++){
// Could also just use WaitForMultipleObjects
WaitForSingleObject(blas_threads[i], 5); //INFINITE);
#ifndef OS_WINDOWSSTORE
// TerminateThread is only available with WINAPI_DESKTOP and WINAPI_SYSTEM not WINAPI_APP in UWP
TerminateThread(blas_threads[i],0);
#endif
CloseHandle(blas_threads[i]);
}

CloseHandle(pool.filled);
CloseHandle(pool.killed);

blas_server_avail = 0;
}



+ 1
- 1
exports/dllinit.c View File

@@ -56,7 +56,7 @@ BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD reason, LPVOID reserved) {
break;
case DLL_THREAD_DETACH:
#if defined(SMP) && defined(USE_TLS)
blas_thread_memory_cleanup(void);
blas_thread_memory_cleanup();
#endif
break;
}


Loading…
Cancel
Save