Browse Source

only destroy wrlock if the corresponding sched_ctx has been initialized

Olivier Aumage 8 years ago
parent
commit
1d7c8c0e5b
1 changed files with 1 additions and 6 deletions
  1. 1 6
      src/core/sched_ctx.c

+ 1 - 6
src/core/sched_ctx.c

@@ -1027,10 +1027,10 @@ void _starpu_delete_all_sched_ctxs()
 	unsigned i;
 	for(i = 0; i < STARPU_NMAX_SCHED_CTXS; i++)
 	{
-		_starpu_sched_ctx_lock_write(i);
 		struct _starpu_sched_ctx *sched_ctx = _starpu_get_sched_ctx_struct(i);
 		if(sched_ctx->id != STARPU_NMAX_SCHED_CTXS)
 		{
+			_starpu_sched_ctx_lock_write(i);
 			_starpu_sched_ctx_free_scheduling_data(sched_ctx);
 			_starpu_barrier_counter_destroy(&sched_ctx->tasks_barrier);
 			_starpu_barrier_counter_destroy(&sched_ctx->ready_tasks_barrier);
@@ -1038,11 +1038,6 @@ void _starpu_delete_all_sched_ctxs()
 			STARPU_PTHREAD_RWLOCK_DESTROY(&sched_ctx->rwlock);
 			_starpu_delete_sched_ctx(sched_ctx);
 		}
-		else
-		{
-			_starpu_sched_ctx_unlock_write(i);
-			STARPU_PTHREAD_RWLOCK_DESTROY(&sched_ctx->rwlock);
-		}
 	}
 
 	STARPU_PTHREAD_KEY_DELETE(sched_ctx_key);