From c19cd3d161b88e5ea487b2660d81b53ace2645a2 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Thu, 1 Apr 2010 17:44:32 +0200 Subject: indexmajig: Protect stdout output with a mutex --- src/indexamajig.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/indexamajig.c') diff --git a/src/indexamajig.c b/src/indexamajig.c index b203a1a5..e2ca63d4 100644 --- a/src/indexamajig.c +++ b/src/indexamajig.c @@ -43,6 +43,7 @@ struct process_args { char *filename; + pthread_mutex_t *output_mutex; UnitCell *cell; int config_cmfilter; int config_noisefilter; @@ -305,7 +306,9 @@ static void *process_image(void *pargsv) if ( config_nearbragg ) { /* Use original data (temporarily) */ simage->data = data_for_measurement; + pthread_mutex_lock(pargs->output_mutex); output_intensities(simage, image.indexed_cell); + pthread_mutex_unlock(pargs->output_mutex); simage->data = NULL; } @@ -377,6 +380,7 @@ int main(int argc, char *argv[]) struct process_args *worker_args[MAX_THREADS]; int worker_active[MAX_THREADS]; int i; + pthread_mutex_t output_mutex = PTHREAD_MUTEX_INITIALIZER; /* Long options */ const struct option longopts[] = { @@ -531,6 +535,7 @@ int main(int argc, char *argv[]) pargs = malloc(sizeof(*pargs)); pargs->filename = prefixed; + pargs->output_mutex = &output_mutex; pargs->config_cmfilter = config_cmfilter; pargs->config_noisefilter = config_noisefilter; pargs->config_writedrx = config_writedrx; -- cgit v1.2.3