浏览代码

allow calling _starpu_worker_relax_on/off from a non worker thread

Olivier Aumage 8 年之前
父节点
当前提交
b6eb712b22
共有 1 个文件被更改,包括 6 次插入2 次删除
  1. 6 2
      src/core/workers.h

+ 6 - 2
src/core/workers.h

@@ -918,7 +918,9 @@ static inline void _starpu_worker_unlock(int workerid)
  * but the scheduling has not yet been made or is already done */
 static inline void _starpu_worker_relax_on(void)
 {
-	int workerid = starpu_worker_get_id_check();
+	int workerid = starpu_worker_get_id();
+	if (workerid == -1)
+		return;
 	struct _starpu_worker *worker = _starpu_get_worker_struct(workerid);
 	STARPU_ASSERT(worker != NULL);
 	STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->sched_mutex);
@@ -930,7 +932,9 @@ static inline void _starpu_worker_relax_on(void)
 
 static inline void _starpu_worker_relax_off(void)
 {
-	int workerid = starpu_worker_get_id_check();
+	int workerid = starpu_worker_get_id();
+	if (workerid == -1)
+		return;
 	struct _starpu_worker *worker = _starpu_get_worker_struct(workerid);
 	STARPU_ASSERT(worker != NULL);
 	STARPU_PTHREAD_MUTEX_LOCK_SCHED(&worker->sched_mutex);