소스 검색

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 12 년 전
부모
커밋
0cd466b90a
1개의 변경된 파일1개의 추가작업 그리고 10개의 파일을 삭제
  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 */