Ver código fonte

Fix data race

Samuel Thibault 13 anos atrás
pai
commit
7df4da4694
1 arquivos alterados com 2 adições e 1 exclusões
  1. 2 1
      tests/main/subgraph_repeat_regenerate.c

+ 2 - 1
tests/main/subgraph_repeat_regenerate.c

@@ -62,19 +62,20 @@ static struct starpu_codelet dummy_codelet =
 
 
 static void callback_task_D(void *arg __attribute__((unused)))
 static void callback_task_D(void *arg __attribute__((unused)))
 {
 {
+	_STARPU_PTHREAD_MUTEX_LOCK(&mutex);
 	loop_cnt++;
 	loop_cnt++;
 
 
 	if (loop_cnt == niter)
 	if (loop_cnt == niter)
 	{
 	{
 		/* We are done */
 		/* We are done */
 		taskD.regenerate = 0;
 		taskD.regenerate = 0;
-		_STARPU_PTHREAD_MUTEX_LOCK(&mutex);
 		_STARPU_PTHREAD_COND_SIGNAL(&cond);
 		_STARPU_PTHREAD_COND_SIGNAL(&cond);
 		_STARPU_PTHREAD_MUTEX_UNLOCK(&mutex);
 		_STARPU_PTHREAD_MUTEX_UNLOCK(&mutex);
 	}
 	}
 	else
 	else
 	{
 	{
 		int ret;
 		int ret;
+		_STARPU_PTHREAD_MUTEX_UNLOCK(&mutex);
 		/* Let's go for another iteration */
 		/* Let's go for another iteration */
 		ret = starpu_task_submit(&taskA);
 		ret = starpu_task_submit(&taskA);
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");
 		STARPU_CHECK_RETURN_VALUE(ret, "starpu_task_submit");