Просмотр исходного кода

mpi: protect access to values posted_requests and ready_requests

Nathalie Furmento лет назад: 8
Родитель
Сommit
c358b9d7a5
1 измененных файлов с 9 добавлено и 1 удалено
  1. 9 1
      mpi/src/starpu_mpi.c

+ 9 - 1
mpi/src/starpu_mpi.c

@@ -969,10 +969,18 @@ static void _starpu_mpi_barrier_func(struct _starpu_mpi_req *barrier_req)
 int _starpu_mpi_barrier(MPI_Comm comm)
 {
 	struct _starpu_mpi_req *barrier_req;
-	int ret = posted_requests+ready_requests;
+	int ret = 0;
 
 	_STARPU_MPI_LOG_IN();
 
+	STARPU_PTHREAD_MUTEX_LOCK(&mutex_posted_requests);
+	ret += posted_requests;
+	STARPU_PTHREAD_MUTEX_UNLOCK(&mutex_posted_requests);
+
+	STARPU_PTHREAD_MUTEX_LOCK(&mutex_ready_requests);
+	ret += ready_requests;
+	STARPU_PTHREAD_MUTEX_UNLOCK(&mutex_ready_requests);
+
 	/* First wait for *both* all tasks and MPI requests to finish, in case
 	 * some tasks generate MPI requests, MPI requests generate tasks, etc.
 	 */