Skip to content

Commit

Permalink
Keep test runner main thread from using 100% of a CPU core
Browse files Browse the repository at this point in the history
  • Loading branch information
Feoramund committed Jun 2, 2024
1 parent 5e3e958 commit d581dbb
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions core/testing/runner.odin
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,23 @@ runner :: proc(internal_tests: []Internal_Test) -> bool {

thread.pool_start(&pool)
main_loop: for !thread.pool_is_empty(&pool) {
{
events_pending := thread.pool_num_done(&pool) > 0

if !events_pending {
poll_tasks: for &task_channel in task_channels {
if chan.len(task_channel.channel) > 0 {
events_pending = true
break poll_tasks
}
}
}

if !events_pending {
// Keep the main thread from pegging a core at 100% usage.
time.sleep(1 * time.Microsecond)
}
}

cycle_pool: for task in thread.pool_pop_done(&pool) {
data := cast(^Task_Data)(task.data)
Expand Down

0 comments on commit d581dbb

Please sign in to comment.