aboutsummaryrefslogtreecommitdiff
path: root/src/solvers
diff options
context:
space:
mode:
Diffstat (limited to 'src/solvers')
-rw-r--r--src/solvers/h48/thread.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/solvers/h48/thread.h b/src/solvers/h48/thread.h
index bea34d0..91e092f 100644
--- a/src/solvers/h48/thread.h
+++ b/src/solvers/h48/thread.h
@@ -7,7 +7,7 @@ typedef struct {
7 int front; 7 int front;
8 int rear; 8 int rear;
9 int tasks_count; 9 int tasks_count;
10 atomic_int active; 10 int active;
11 pthread_mutex_t mutex; 11 pthread_mutex_t mutex;
12 pthread_cond_t cond; 12 pthread_cond_t cond;
13 pthread_cond_t active_cond; 13 pthread_cond_t active_cond;
@@ -117,11 +117,13 @@ start_thread(void *arg)
117 117
118 solve_h48_single(task, queue); 118 solve_h48_single(task, queue);
119 119
120 atomic_fetch_sub(&queue->active, 1); 120 pthread_mutex_lock(&queue->mutex);
121 queue->active--;
121 122
122 if(queue->tasks_count == 0 && queue->active == 0) 123 if(queue->tasks_count == 0 && queue->active == 0)
123 pthread_cond_signal(&queue->active_cond); 124 pthread_cond_signal(&queue->active_cond);
124 } 125 }
126 pthread_mutex_unlock(&queue->mutex);
125 } 127 }
126 return NULL; 128 return NULL;
127} 129}

Generated with cgit - Back to sebastiano.tronto.net