|
@@ -101,16 +101,13 @@ pool_join :: proc(pool: ^Pool) {
|
|
|
intrinsics.atomic_store(&pool.is_running, false)
|
|
|
sync.post(&pool.sem_available, len(pool.threads))
|
|
|
|
|
|
- yield()
|
|
|
-
|
|
|
// Because we already stopped the pool, there's no need to take a lock here.
|
|
|
-
|
|
|
- started_count: int
|
|
|
- for started_count < len(pool.threads) {
|
|
|
- started_count = 0
|
|
|
+ done_count: int
|
|
|
+ for done_count < len(pool.threads) {
|
|
|
+ done_count = 0
|
|
|
for t in pool.threads {
|
|
|
- if .Started in t.flags {
|
|
|
- started_count += 1
|
|
|
+ if .Done in t.flags {
|
|
|
+ done_count += 1
|
|
|
if .Joined not_in t.flags {
|
|
|
join(t)
|
|
|
}
|