diff options
Diffstat (limited to 'src/invalid/invalid_thread.c')
| -rw-r--r-- | src/invalid/invalid_thread.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/invalid/invalid_thread.c b/src/invalid/invalid_thread.c index 74f247c..2e01109 100644 --- a/src/invalid/invalid_thread.c +++ b/src/invalid/invalid_thread.c @@ -11,6 +11,13 @@ #include "util/random.h" #include "util/timeout.h" +static size_t invalid_get_generated(thread_t *thread) { + pthread_mutex_lock(thread->mutex_state); + size_t result = *thread->generated; + pthread_mutex_unlock(thread->mutex_state); + return result; +} + void *invalid_thread(void *arg) { thread_t *thread = (thread_t *)arg; pari_thread_start(thread->pari_thread); @@ -26,7 +33,7 @@ void *invalid_thread(void *arg) { invalid->field = gcopy(thread->original_curve->field); invalid->a = gcopy(thread->original_curve->a); - while (*thread->generated < thread->nprimes) { + while (invalid_get_generated(thread) < thread->nprimes) { pari_sp btop = avma; exhaustive_gen(invalid, thread->setup, OFFSET_B, OFFSET_GENERATORS); size_t ndivides = 0; |
