From 9cd40c762e1db936f14f61da26b7fad17cbd989c Mon Sep 17 00:00:00 2001 From: Thomas White Date: Thu, 1 Apr 2010 17:53:04 +0200 Subject: indexamajig: Protect GPU context with mutex --- src/indexamajig.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/indexamajig.c') diff --git a/src/indexamajig.c b/src/indexamajig.c index e2ca63d4..ad6fc441 100644 --- a/src/indexamajig.c +++ b/src/indexamajig.c @@ -43,7 +43,8 @@ struct process_args { char *filename; - pthread_mutex_t *output_mutex; + pthread_mutex_t *output_mutex; /* Protects stdout */ + pthread_mutex_t *gpu_mutex; /* Protects "gctx" */ UnitCell *cell; int config_cmfilter; int config_noisefilter; @@ -315,8 +316,10 @@ static void *process_image(void *pargsv) /* Simulate if requested */ if ( config_simulate ) { if ( config_gpu ) { + pthread_mutex_lock(pargs->gpu_mutex); simulate_and_write(simage, &gctx, intensities, counts, cell); + pthread_mutex_unlock(pargs->gpu_mutex); } else { simulate_and_write(simage, NULL, intensities, counts, cell); @@ -381,6 +384,7 @@ int main(int argc, char *argv[]) int worker_active[MAX_THREADS]; int i; pthread_mutex_t output_mutex = PTHREAD_MUTEX_INITIALIZER; + pthread_mutex_t gpu_mutex = PTHREAD_MUTEX_INITIALIZER; /* Long options */ const struct option longopts[] = { @@ -536,6 +540,7 @@ int main(int argc, char *argv[]) pargs = malloc(sizeof(*pargs)); pargs->filename = prefixed; pargs->output_mutex = &output_mutex; + pargs->gpu_mutex = &gpu_mutex; pargs->config_cmfilter = config_cmfilter; pargs->config_noisefilter = config_noisefilter; pargs->config_writedrx = config_writedrx; -- cgit v1.2.3