mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Keep test runner main thread from using 100% of a CPU core
This commit is contained in:
@@ -439,6 +439,23 @@ runner :: proc(internal_tests: []Internal_Test) -> bool {
|
|||||||
|
|
||||||
thread.pool_start(&pool)
|
thread.pool_start(&pool)
|
||||||
main_loop: for !thread.pool_is_empty(&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) {
|
cycle_pool: for task in thread.pool_pop_done(&pool) {
|
||||||
data := cast(^Task_Data)(task.data)
|
data := cast(^Task_Data)(task.data)
|
||||||
|
|||||||
Reference in New Issue
Block a user