23 #if defined(GPR_WINDOWS) && !defined(GPR_ABSEIL_SYNC) && \
24 !defined(GPR_CUSTOM_SYNC)
31 InitializeCriticalSection(&
mu->cs);
38 EnterCriticalSection(&
mu->cs);
45 LeaveCriticalSection(&
mu->cs);
49 int result = TryEnterCriticalSection(&
mu->cs);
52 LeaveCriticalSection(&
mu->cs);
74 SleepConditionVariableCS(
cv, &
mu->cs, INFINITE);
81 if (now_ms >= deadline_ms) {
84 if ((deadline_ms - now_ms) >= INFINITE) {
85 timeout_max_ms = INFINITE - 1;
87 timeout_max_ms = (DWORD)(deadline_ms - now_ms);
89 timeout = (SleepConditionVariableCS(
cv, &
mu->cs, timeout_max_ms) == 0 &&
90 GetLastError() == ERROR_TIMEOUT);
104 struct run_once_func_arg {
105 void (*init_function)(void);
108 struct run_once_func_arg*
arg = (
struct run_once_func_arg*)
v;
109 (*
arg->init_function)();
114 struct run_once_func_arg
arg;
115 arg.init_function = init_function;
116 InitOnceExecuteOnce(
once, run_once_func, &
arg, &phony);