diff --git a/src/base/base_entry_point.c b/src/base/base_entry_point.c index 7b7bec00..8368a725 100644 --- a/src/base/base_entry_point.c +++ b/src/base/base_entry_point.c @@ -6,7 +6,7 @@ global CondVar async_tick_start_cond_var = {0}; global CondVar async_tick_stop_cond_var = {0}; global Mutex async_tick_start_mutex = {0}; global Mutex async_tick_stop_mutex = {0}; -global U64 async_wait_timeout = 0; +global B32 async_loop_again = 0; global B32 global_async_exit = 0; internal void @@ -190,7 +190,14 @@ async_thread_entry_point(void *params) ThreadNameF("async_thread_%I64u", lane_idx()); for(;!ins_atomic_u32_eval(&global_async_exit);) { - MutexScope(async_tick_start_mutex) cond_var_wait(async_tick_start_cond_var, async_tick_start_mutex, os_now_microseconds()+100000); + if(!ins_atomic_u32_eval(&async_loop_again)) + { + MutexScope(async_tick_start_mutex) cond_var_wait(async_tick_start_cond_var, async_tick_start_mutex, os_now_microseconds()+100000); + if(lane_idx() == 0) + { + async_loop_again = 0; + } + } #if defined(CONTENT_H) c_tick(); #endif diff --git a/src/dasm_cache/dasm_cache.c b/src/dasm_cache/dasm_cache.c index 392ec884..9755cc44 100644 --- a/src/dasm_cache/dasm_cache.c +++ b/src/dasm_cache/dasm_cache.c @@ -728,6 +728,7 @@ dasm_tick(void) req_n->v.hash = hash; req_n->v.params = params; req_n->v.params.dbgi_key = di_key_copy(dasm_shared->req_arena, &req_n->v.params.dbgi_key); + ins_atomic_u32_eval_assign(&async_loop_again, 1); } di_scope_close(di_scope);