Prechádzať zdrojové kódy

Use xbt_mutex_try_acquire when it is available

Samuel Thibault 10 rokov pred
rodič
commit
72b4685423
2 zmenil súbory, kde vykonal 5 pridanie a 3 odobranie
  1. 1 1
      configure.ac
  2. 4 2
      src/common/thread.c

+ 1 - 1
configure.ac

@@ -1012,7 +1012,7 @@ if test x$enable_simgrid = xyes ; then
 			AC_MSG_ERROR(Simgrid support needs simgrid installed)
 		]
 	)
-   	AC_CHECK_FUNCS([MSG_process_join MSG_get_as_by_name MSG_environment_get_routing_root])
+   	AC_CHECK_FUNCS([MSG_process_join MSG_get_as_by_name MSG_environment_get_routing_root xbt_mutex_try_acquire])
 	AC_CHECK_FUNCS([xbt_barrier_init], [AC_DEFINE([STARPU_SIMGRID_HAVE_XBT_BARRIER_INIT], [1], [Define to 1 if you have the `xbt_barrier_init' function.])])
 	AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
 		    		[[#include <msg/msg.h>]],

+ 4 - 2
src/common/thread.c

@@ -134,9 +134,11 @@ int starpu_pthread_mutex_trylock(starpu_pthread_mutex_t *mutex)
 	int ret;
 	_STARPU_TRACE_TRYLOCK_MUTEX();
 
-	/* TODO: use what simgrid will provide some day */
-	/* xbt_mutex_try_acquire(*mutex); */
+#ifdef HAVE_XBT_MUTEX_TRY_ACQUIRE
+	ret = xbt_mutex_try_acquire(*mutex);
+#else
 	ret = simcall_mutex_trylock((smx_mutex_t)*mutex);
+#endif
 	ret = ret ? 0 : EBUSY;
 
 	_STARPU_TRACE_MUTEX_LOCKED();