diff --git a/runtime/src/iree/task/worker.c b/runtime/src/iree/task/worker.c
index f4ffed8..5bebaa5 100644
--- a/runtime/src/iree/task/worker.c
+++ b/runtime/src/iree/task/worker.c
@@ -140,6 +140,37 @@
   IREE_TRACE_ZONE_END(z0);
 }
 
+// Marks the worker as "active" (scheduling work or executing it).
+// The idle mask is accessed with 'relaxed' order because it's just a hint.
+static void iree_task_worker_mark_active(iree_task_worker_t* worker) {
+  iree_task_affinity_set_t old_idle_mask =
+      iree_atomic_task_affinity_set_fetch_and(
+          &worker->executor->worker_idle_mask, ~worker->worker_bit,
+          iree_memory_order_relaxed);
+  (void)old_idle_mask;
+  IREE_TRACE_PLOT_VALUE_F32(
+      worker->executor->trace_name,
+      old_idle_mask
+          ? (100.0f -
+             100.0f * (iree_task_affinity_set_count_ones(old_idle_mask) - 1) /
+                 (float)worker->executor->worker_count)
+          : 100.0f);
+}
+
+// Marks the worker as "idle" (sleeping/spinning waiting to wake).
+// The idle mask is accessed with 'relaxed' order because it's just a hint.
+static void iree_task_worker_mark_idle(iree_task_worker_t* worker) {
+  iree_task_affinity_set_t old_idle_mask =
+      iree_atomic_task_affinity_set_fetch_or(
+          &worker->executor->worker_idle_mask, worker->worker_bit,
+          iree_memory_order_relaxed);
+  (void)old_idle_mask;
+  IREE_TRACE_PLOT_VALUE_F32(
+      worker->executor->trace_name,
+      100.0f - 100.0f * (iree_task_affinity_set_count_ones(old_idle_mask) + 1) /
+                   (float)worker->executor->worker_count);
+}
+
 void iree_task_worker_post_tasks(iree_task_worker_t* worker,
                                  iree_task_list_t* list) {
   // Move the list into the mailbox. Note that the mailbox is LIFO and this list
@@ -275,19 +306,8 @@
     iree_wait_token_t wait_token =
         iree_notification_prepare_wait(&worker->wake_notification);
 
-    // The masks are accessed with 'relaxed' order because they are just hints.
-    iree_task_affinity_set_t old_idle_mask =
-        iree_atomic_task_affinity_set_fetch_and(
-            &worker->executor->worker_idle_mask, ~worker->worker_bit,
-            iree_memory_order_relaxed);
-    (void)old_idle_mask;
-    IREE_TRACE_PLOT_VALUE_F32(
-        worker->executor->trace_name,
-        old_idle_mask
-            ? (100.0f -
-               100.0f * (iree_task_affinity_set_count_ones(old_idle_mask) - 1) /
-                   (float)worker->executor->worker_count)
-            : 100.0f);
+    // Now active until we decide to go back to sleep until the next pump.
+    iree_task_worker_mark_active(worker);
 
     // Check state to see if we've been asked to exit.
     if (iree_atomic_load_int32(&worker->state, iree_memory_order_acquire) ==
@@ -318,15 +338,7 @@
     // We've finished all the work we have scheduled so set our idle flag.
     // This ensures that if any other thread comes in and wants to give us
     // work we will properly coordinate/wake below.
-    old_idle_mask = iree_atomic_task_affinity_set_fetch_or(
-        &worker->executor->worker_idle_mask, worker->worker_bit,
-        iree_memory_order_relaxed);
-    (void)old_idle_mask;
-    IREE_TRACE_PLOT_VALUE_F32(
-        worker->executor->trace_name,
-        100.0f - 100.0f *
-                     (iree_task_affinity_set_count_ones(old_idle_mask) + 1) /
-                     (float)worker->executor->worker_count);
+    iree_task_worker_mark_idle(worker);
 
     // When we encounter a complete lack of work we can self-nominate to check
     // the global work queue and distribute work to other threads. Only one
@@ -391,6 +403,9 @@
     iree_task_worker_pump_until_exit(worker);
   }
 
+  // Indicate idle immediately before exit.
+  iree_task_worker_mark_idle(worker);
+
   IREE_TRACE_ZONE_END(thread_zone);
   iree_atomic_store_int32(&worker->state, IREE_TASK_WORKER_STATE_ZOMBIE,
                           iree_memory_order_release);
