aboutsummaryrefslogtreecommitdiff
path: root/src/checker.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-07-14 22:53:02 +0100
committergingerBill <bill@gingerbill.org>2021-07-14 22:53:02 +0100
commite15858e2be223c52e4daaf433d62ee5719943782 (patch)
tree440943f37359f5d1df57b8a13b5f98ddd6f1d9f1 /src/checker.cpp
parent6d8302825c10de815583057249249a6dc8282316 (diff)
Remove random load balancing in `thread_proc_body`
Diffstat (limited to 'src/checker.cpp')
-rw-r--r--src/checker.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/checker.cpp b/src/checker.cpp
index 37565b2a5..ac783bcca 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -4562,6 +4562,7 @@ struct ThreadProcBodyData {
GB_THREAD_PROC(thread_proc_body) {
ThreadProcBodyData *data = cast(ThreadProcBodyData *)thread->user_data;
Checker *c = data->checker;
+ GB_ASSERT(c != nullptr);
ThreadProcBodyData *all_data = data->all_data;
ProcBodyQueue *this_queue = data->queue;
@@ -4572,13 +4573,10 @@ GB_THREAD_PROC(thread_proc_body) {
gbRandom r = {}; gb_random_init(&r);
for (ProcInfo *pi; mpmc_dequeue(this_queue, &pi); /**/) {
- // NOTE(bill): Randomize the load balancing of procs
- // adding more procs to the queues
- u32 index = gb_random_gen_u32(&r) % data->thread_count;
- ProcBodyQueue *q = all_data[index].queue;
- consume_proc_info_queue(c, pi, q, &untyped);
+ consume_proc_info_queue(c, pi, this_queue, &untyped);
}
+#if 0
// Greedy Work Stealing
retry:;
isize max_count = 0;
@@ -4598,6 +4596,7 @@ retry:;
}
goto retry;
}
+#endif
gb_semaphore_release(&c->procs_to_check_semaphore);
@@ -4605,6 +4604,8 @@ retry:;
}
void check_procedure_bodies(Checker *c) {
+ GB_ASSERT(c != nullptr);
+
u32 thread_count = cast(u32)gb_max(build_context.thread_count, 1);
u32 worker_count = thread_count-1; // NOTE(bill): The main thread will also be used for work
if (!build_context.threaded_checker) {