mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-07 06:18:42 +00:00
eliminate txt layer parsing threads; use async layer
This commit is contained in:
@@ -1611,12 +1611,6 @@ txt_init(void)
|
|||||||
txt_shared->u2p_ring_base = push_array_no_zero(arena, U8, txt_shared->u2p_ring_size);
|
txt_shared->u2p_ring_base = push_array_no_zero(arena, U8, txt_shared->u2p_ring_size);
|
||||||
txt_shared->u2p_ring_cv = os_condition_variable_alloc();
|
txt_shared->u2p_ring_cv = os_condition_variable_alloc();
|
||||||
txt_shared->u2p_ring_mutex = os_mutex_alloc();
|
txt_shared->u2p_ring_mutex = os_mutex_alloc();
|
||||||
txt_shared->parse_thread_count = Clamp(1, os_get_system_info()->logical_processor_count-1, 4);
|
|
||||||
txt_shared->parse_threads = push_array(arena, OS_Handle, txt_shared->parse_thread_count);
|
|
||||||
for(U64 idx = 0; idx < txt_shared->parse_thread_count; idx += 1)
|
|
||||||
{
|
|
||||||
txt_shared->parse_threads[idx] = os_thread_launch(txt_parse_thread__entry_point, (void *)idx, 0);
|
|
||||||
}
|
|
||||||
txt_shared->evictor_thread = os_thread_launch(txt_evictor_thread__entry_point, 0, 0);
|
txt_shared->evictor_thread = os_thread_launch(txt_evictor_thread__entry_point, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1782,6 +1776,7 @@ txt_text_info_from_hash_lang(TXT_Scope *scope, U128 hash, TXT_LangKind lang)
|
|||||||
if(node_is_new)
|
if(node_is_new)
|
||||||
{
|
{
|
||||||
txt_u2p_enqueue_req(hash, lang, max_U64);
|
txt_u2p_enqueue_req(hash, lang, max_U64);
|
||||||
|
async_push_work(txt_parse_work);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return info;
|
return info;
|
||||||
@@ -2151,11 +2146,8 @@ txt_u2p_dequeue_req(U128 *hash_out, TXT_LangKind *lang_out)
|
|||||||
os_condition_variable_broadcast(txt_shared->u2p_ring_cv);
|
os_condition_variable_broadcast(txt_shared->u2p_ring_cv);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
ASYNC_WORK_DEF(txt_parse_work)
|
||||||
txt_parse_thread__entry_point(void *p)
|
|
||||||
{
|
{
|
||||||
for(;;)
|
|
||||||
{
|
|
||||||
//- rjf: get next key
|
//- rjf: get next key
|
||||||
U128 hash = {0};
|
U128 hash = {0};
|
||||||
TXT_LangKind lang = TXT_LangKind_Null;
|
TXT_LangKind lang = TXT_LangKind_Null;
|
||||||
@@ -2346,7 +2338,7 @@ txt_parse_thread__entry_point(void *p)
|
|||||||
}
|
}
|
||||||
|
|
||||||
hs_scope_close(scope);
|
hs_scope_close(scope);
|
||||||
}
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
|||||||
@@ -218,10 +218,6 @@ struct TXT_Shared
|
|||||||
OS_Handle u2p_ring_cv;
|
OS_Handle u2p_ring_cv;
|
||||||
OS_Handle u2p_ring_mutex;
|
OS_Handle u2p_ring_mutex;
|
||||||
|
|
||||||
// rjf: parse threads
|
|
||||||
U64 parse_thread_count;
|
|
||||||
OS_Handle *parse_threads;
|
|
||||||
|
|
||||||
// rjf: evictor thread
|
// rjf: evictor thread
|
||||||
OS_Handle evictor_thread;
|
OS_Handle evictor_thread;
|
||||||
};
|
};
|
||||||
@@ -303,7 +299,7 @@ internal TXT_LineTokensSlice txt_line_tokens_slice_from_info_data_line_range(Are
|
|||||||
|
|
||||||
internal B32 txt_u2p_enqueue_req(U128 hash, TXT_LangKind lang, U64 endt_us);
|
internal B32 txt_u2p_enqueue_req(U128 hash, TXT_LangKind lang, U64 endt_us);
|
||||||
internal void txt_u2p_dequeue_req(U128 *hash_out, TXT_LangKind *lang_out);
|
internal void txt_u2p_dequeue_req(U128 *hash_out, TXT_LangKind *lang_out);
|
||||||
internal void txt_parse_thread__entry_point(void *p);
|
ASYNC_WORK_DEF(txt_parse_work);
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Evictor Threads
|
//~ rjf: Evictor Threads
|
||||||
|
|||||||
Reference in New Issue
Block a user