Procházet zdrojové kódy

revert r8991: the busy_mutex must be taken after the spinlock, so we can not take the spinlock after the mutex. Reading an int really is atomic on all our targets anyway.

Samuel Thibault před 12 roky
rodič
revize
0cd466b90a
1 změnil soubory, kde provedl 1 přidání a 10 odebrání
  1. 1 10
      src/datawizard/interfaces/data_interface.c

+ 1 - 10
src/datawizard/interfaces/data_interface.c

@@ -546,17 +546,8 @@ static void _starpu_data_unregister(starpu_data_handle_t handle, unsigned cohere
 
 	/* Wait for all requests to finish (notably WT requests) */
 	_STARPU_PTHREAD_MUTEX_LOCK(&handle->busy_mutex);
-	while (1) {
-		int busy;
-		_starpu_spin_lock(&handle->header_lock);
-		busy = handle->busy_count;
-		_starpu_spin_unlock(&handle->header_lock);
-		if (!busy)
-			break;
-		/* This is woken by _starpu_data_check_not_busy, always called
-		 * after decrementing busy_count */
+	while (handle->busy_count)
 		_STARPU_PTHREAD_COND_WAIT(&handle->busy_cond, &handle->busy_mutex);
-	}
 	_STARPU_PTHREAD_MUTEX_UNLOCK(&handle->busy_mutex);
 
 	/* Wait for finished requests to release the handle */