aboutsummaryrefslogtreecommitdiff
path: root/src/invalid/invalid_thread.c
diff options
context:
space:
mode:
authorJ08nY2019-03-07 13:43:35 +0100
committerJ08nY2019-03-07 13:43:35 +0100
commit196b9aff99ca427b0339b9545c300f31bfb86a0e (patch)
treee46385920cb4071b0fd03e6a564c1d1f86f94460 /src/invalid/invalid_thread.c
parentdeb5d447092e27b29ac2b19e61d8303813525be3 (diff)
downloadecgen-196b9aff99ca427b0339b9545c300f31bfb86a0e.tar.gz
ecgen-196b9aff99ca427b0339b9545c300f31bfb86a0e.tar.zst
ecgen-196b9aff99ca427b0339b9545c300f31bfb86a0e.zip
Diffstat (limited to 'src/invalid/invalid_thread.c')
-rw-r--r--src/invalid/invalid_thread.c9
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;