Procházet zdrojové kódy

Have `_starpu_job_destroy' wait for the job to finish.

Ludovic Courtès před 13 roky
rodič
revize
f89a56060d
1 změnil soubory, kde provedl 8 přidání a 0 odebrání
  1. 8 0
      src/core/jobs.c

+ 8 - 0
src/core/jobs.c

@@ -105,6 +105,14 @@ struct _starpu_job* __attribute__((malloc)) _starpu_job_create(struct starpu_tas
 
 void _starpu_job_destroy(struct _starpu_job *j)
 {
+	_STARPU_PTHREAD_MUTEX_LOCK(&j->sync_mutex);
+
+	/* Wait for the job to be terminated.  */
+	while (j->terminated == 0)
+		_STARPU_PTHREAD_COND_WAIT(&j->sync_cond, &j->sync_mutex);
+
+	_STARPU_PTHREAD_MUTEX_UNLOCK(&j->sync_mutex);
+
 	_STARPU_PTHREAD_COND_DESTROY(&j->sync_cond);
 	_STARPU_PTHREAD_MUTEX_DESTROY(&j->sync_mutex);