From d6ed8c84ea066c8a6b27dc052425e042ea06b738 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Thu, 26 Dec 2024 08:29:16 -0800 Subject: taskq: skip the lock/unlock if there is no callback This should help some cases of synchronous callers that don't use a callback at all. --- src/core/taskq.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/core/taskq.c') diff --git a/src/core/taskq.c b/src/core/taskq.c index 53252a8e..6b089767 100644 --- a/src/core/taskq.c +++ b/src/core/taskq.c @@ -150,13 +150,13 @@ nni_task_exec(nni_task *task) } else { task->task_busy++; } - nni_mtx_unlock(&task->task_mtx); if (task->task_cb != NULL) { + nni_mtx_unlock(&task->task_mtx); task->task_cb(task->task_arg); + nni_mtx_lock(&task->task_mtx); } - nni_mtx_lock(&task->task_mtx); task->task_busy--; if (task->task_busy == 0) { nni_cv_wake(&task->task_cv); -- cgit v1.2.3-70-g09d2