From 5192651706d39b35e82b6f62f2b02764cdb3983c Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 19 Nov 2018 17:58:22 +0100 Subject: [PATCH] Add CriticalSection handling instead of mutexes for Windows --- driver/level3/level3_thread.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/driver/level3/level3_thread.c b/driver/level3/level3_thread.c index 15cad9274..ac96f9424 100644 --- a/driver/level3/level3_thread.c +++ b/driver/level3/level3_thread.c @@ -515,7 +515,12 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG BLASLONG nthreads_m, BLASLONG nthreads_n) { #ifndef USE_OPENMP +#ifndef OS_WINDOWS static pthread_mutex_t level3_lock = PTHREAD_MUTEX_INITIALIZER; +#else +CRITICAL_SECTION level3_lock; +InitializeCriticalSection((PCRITICAL_SECTION)&level3_lock; +#endif #endif blas_arg_t newarg; @@ -559,7 +564,11 @@ static pthread_mutex_t level3_lock = PTHREAD_MUTEX_INITIALIZER; #endif #ifndef USE_OPENMP +#ifndef OS_WINDOWS pthread_mutex_lock(&level3_lock); +#else +EnterCriticalSection((PCRITICAL_SECTION)&level3_lock); +#endif #endif #ifdef USE_ALLOC_HEAP @@ -680,7 +689,11 @@ pthread_mutex_lock(&level3_lock); #endif #ifndef USE_OPENMP +#ifndef OS_WINDOWS pthread_mutex_unlock(&level3_lock); +#else + LeaveCriticalSection((PCRITICAL_SECTION)&level3_lock); +#endif #endif return 0;