From d99177f86d00f87f74ceaa498d8f3ccaa81a3c95 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 30 Jun 2020 11:48:48 +0200 Subject: [PATCH] MINOR: sched: make sched->task_list_size atomic We'll need to update it from foreign threads in order to throw killed tasks and maintain correct accounting, so let's make it atomic. --- src/task.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/task.c b/src/task.c index 9f2e9d5df..b65000b8f 100644 --- a/src/task.c +++ b/src/task.c @@ -405,7 +405,7 @@ unsigned int run_tasks_from_lists(unsigned int budgets[]) /* OK then this is a regular task */ - task_per_thread[tid].task_list_size--; + _HA_ATOMIC_SUB(&task_per_thread[tid].task_list_size, 1); if (unlikely(t->call_date)) { uint64_t now_ns = now_mono_time(); @@ -585,7 +585,7 @@ void process_runnable_tasks() /* And add it to the local task list */ tasklet_insert_into_tasklet_list(&tt->tasklets[TL_NORMAL], (struct tasklet *)t); tt->tl_class_mask |= 1 << TL_NORMAL; - tt->task_list_size++; + _HA_ATOMIC_ADD(&tt->task_list_size, 1); activity[tid].tasksw++; }