gingerBill
14950b8ae9
Park nested procedures on their parent until its body is checked instead of re-queuing; per-entry #load caches and parallel #load_directory reads; don't merge dependencies into package-level declarations; separate the thread pool's contended fields onto their own cache lines
2026-10-02 12:55:09 +01:00
gingerBill
ff9d3584f4
Per-thread arrays instead of MPSC queues for entities, definitions and untyped expressions; walk the minimum dependency set from per-task stacks, and scan its root definitions in parallel
2026-10-02 12:07:06 +01:00
gingerBill
0de3f92449
Thread pool: wake one sleeping worker per task instead of all, spin briefly before sleeping; walk the procedure dependency tree in chunks
2026-10-02 11:24:28 +01:00
gingerBill
c494c7a503
Check global entity groups in parallel
...
* CAS-claimed entities, cycle-safe waits for entities and records, lazy entities without lazy_mutex
* Build union type names only on error, take the error block only to report proc group overload errors
2026-10-01 23:17:34 +01:00
kalsprite
239ced8731
thread_pool: an exiting worker must not leave published
2026-08-19 12:09:20 -07:00
gingerBill
20a7a645c2
Mock out TSAN_* usage in thread_pool.cpp
2026-02-02 10:48:55 +00:00
Lucas Perlind
15b4b9277a
spin in recursive mutex lock; use compare exchange for broadcast
2025-09-24 15:54:58 +10:00
gingerBill
a8f84c87ae
Add the permanent and temporary arenas directly on the Thread
2024-07-15 01:05:29 +01:00
gingerBill
d1450e3d88
Fix styling issues
2024-07-14 14:44:22 +01:00
Colin Davidson
64feb7599e
move to isize
2024-07-14 00:33:40 -07:00
Colin Davidson
4420128dc1
handle steal-fail vs steal-empty
2024-07-14 00:29:58 -07:00
Colin Davidson
cdede4928c
move to a growing queue
2024-07-13 23:16:22 -07:00
gingerBill
0b01cfd853
Fix minor possible race condition
2023-01-16 18:18:08 +00:00
gingerBill
c7a704d345
Use RwMutex for the Scope
2023-01-03 15:26:47 +00:00
gingerBill
0fb3032b73
General improves to alloc_ast_node and other unnecessary checks
2023-01-03 14:45:09 +00:00
gingerBill
e10fe91eba
Narrow global gen_procs_mutex further
2023-01-02 23:50:48 +00:00
gingerBill
7ffffeeccc
Comment out many mutex guards in type_(size|align)_of_internal
2023-01-02 21:35:40 +00:00
gingerBill
1568971732
Fix pool running
2023-01-02 18:04:16 +00:00
gingerBill
ad52003077
Remove some unneeded checks
2023-01-02 17:15:29 +00:00
gingerBill
c386509112
Minor clean up of thread pool code
2023-01-02 17:06:29 +00:00
gingerBill
015fe924b8
Remove use of queues for procedure checking.
2023-01-02 12:28:38 +00:00
gingerBill
da479c7628
Minor style change
2023-01-02 00:35:12 +00:00
gingerBill
3c90a05957
Replace condition+mutex with futex
2023-01-02 00:26:17 +00:00
gingerBill
5c519f0e8d
Remove the synchronization primitive init/destroy calls
2023-01-01 16:19:21 +00:00
gingerBill
60d0390ef8
Unify compiler Futex interface
2023-01-01 14:48:31 +00:00
Colin Davidson
5f27f2dd7f
move to work-stealing threadpool
2022-12-28 21:44:17 -08:00
gingerBill
eb0775ad53
Move mutex use around in thread pool
2022-12-20 14:45:01 +00:00
gingerBill
134c7db4d2
Combine join and destroy for threads
2022-12-20 14:08:24 +00:00
gingerBill
a0e3a99dd1
Remove need for semaphore in Thread
2022-12-20 14:07:14 +00:00
gingerBill
0edda2bea7
Clarify ThreadPool interface; Move import_mutex guarding to just the string set
2022-12-20 12:46:33 +00:00
gingerBill
ac5f5a33e9
gb_internal a lot
2022-12-18 21:17:07 +00:00
gingerBill
e814a3693f
Improve usage of file_id
2021-11-15 17:26:01 +00:00
gingerBill
f973d271cf
Add mutex around condition_broadcast
2021-08-26 22:28:09 +01:00
gingerBill
b33bf3f704
Correct race condition and incorrect usage of condition_signal outside of a mutex lock
2021-08-26 22:17:51 +01:00
gingerBill
ac191bd31f
Simplify logic for -thread-count:1
2021-08-26 21:30:23 +01:00
gingerBill
ad3a3547d6
Unify thread pool logic across the rest of the compiler, using a global thread pool
2021-08-26 21:22:30 +01:00
gingerBill
25c3fd48f0
Improved ThreadPool implementation
2021-08-26 17:56:28 +01:00
gingerBill
e45aa68c14
Remove unneeded +1 for outstanding_task_count
2021-08-26 16:10:32 +01:00
nakst
9397555c91
Thread pool: create threads in thread_pool_wait
2021-08-23 10:11:24 +01:00
nakst
35204e3cc5
thread_pool.cpp: fix with 1 thread; gb.h: remove buggy /proc/cpuinfo code
2021-08-23 09:18:18 +01:00
gingerBill
daced956e3
Make ThreadPool use std::atomic and heap_allocator()
2021-08-22 23:01:01 +01:00
nakst
b878be6f79
Thread pool fix on Win32
2021-08-22 21:24:56 +01:00
nakst
1f25f60a68
Rewrite thread_pool.cpp
2021-08-22 21:13:41 +01:00
gingerBill
ac6cc5191a
Make ThreadPool.is_running atomic
2021-08-19 17:43:15 +01:00
gingerBill
df372dbd5b
Migrate and remove more from gb.h
2021-08-19 15:38:21 +01:00
gingerBill
5c4d95d539
Move more of gb.h's Synchronization code into common.cpp
2021-08-19 15:19:36 +01:00
gingerBill
3fde4616e0
Correct mutex usage for path_to_fullpath; make ThreadPool use BlockingMutex
2021-08-18 21:21:30 +01:00
gingerBill
8a6b743d2a
Simplify thread_pool_wait_to_process
2021-07-10 21:50:19 +01:00
gingerBill
ed8a6f872d
Move things around for sanity checking for multithread preparation
2021-07-10 21:29:49 +01:00
gingerBill
17001bf38c
Nearly approach full functionality for -use-separate-modules coupled with multithreading
2021-05-04 00:45:09 +01:00