util/async.c: Small locking fix

This commit is contained in:
Tau 2019-03-16 12:47:55 -04:00
parent 657367c040
commit 2df92f7492

View File

@ -60,6 +60,8 @@ HRESULT async_submit(struct async *async, struct irp *irp, async_task_t task)
return task(async->ctx, irp); return task(async->ctx, irp);
} }
EnterCriticalSection(&async->lock);
if (async->thread == NULL) { if (async->thread == NULL) {
/* Ensure our worker thread is running */ /* Ensure our worker thread is running */
async->thread = (HANDLE) _beginthreadex( async->thread = (HANDLE) _beginthreadex(
@ -75,8 +77,6 @@ HRESULT async_submit(struct async *async, struct irp *irp, async_task_t task)
} }
} }
EnterCriticalSection(&async->lock);
while (async->task != NULL) { while (async->task != NULL) {
ok = SleepConditionVariableCS(&async->avail, &async->lock, INFINITE); ok = SleepConditionVariableCS(&async->avail, &async->lock, INFINITE);