diff --git a/test/mpi/threads/comm/idup_deadlock.c b/test/mpi/threads/comm/idup_deadlock.c index 92dc7b418e0..5afd6f95222 100644 --- a/test/mpi/threads/comm/idup_deadlock.c +++ b/test/mpi/threads/comm/idup_deadlock.c @@ -41,6 +41,7 @@ MTEST_THREAD_RETURN_TYPE test_comm_dup(void *arg) wait = 0; for (i = 0; i < NUM_THREADS; i++) wait += start_idup[i]; + MTest_thread_yield(); } while (wait > NUM_THREADS / 2); } diff --git a/test/mpi/util/mtest_thread_abt.h b/test/mpi/util/mtest_thread_abt.h index e663e3745d8..d4998a9381c 100644 --- a/test/mpi/util/mtest_thread_abt.h +++ b/test/mpi/util/mtest_thread_abt.h @@ -111,6 +111,14 @@ int MTest_thread_lock_free(MTEST_THREAD_LOCK_TYPE * lock) return 0; } +int MTest_thread_yield(void) +{ + int ret; + ret = ABT_thread_yield(); + MTEST_ABT_ERROR(ret, "ABT_thread_yield"); + return 0; +} + /* -------------------------------------------- */ #define HAVE_MTEST_THREAD_BARRIER 1 diff --git a/test/mpi/util/mtest_thread_pthread.h b/test/mpi/util/mtest_thread_pthread.h index 62db23ab55e..a09acae46b9 100644 --- a/test/mpi/util/mtest_thread_pthread.h +++ b/test/mpi/util/mtest_thread_pthread.h @@ -80,6 +80,11 @@ int MTest_thread_lock_free(MTEST_THREAD_LOCK_TYPE * lock) return err; } +int MTest_thread_yield(void) +{ + return 0; +} + /*----------------------------------------------------------------*/ #if defined(HAVE_PTHREAD_BARRIER_INIT) diff --git a/test/mpi/util/mtest_thread_win.h b/test/mpi/util/mtest_thread_win.h index c4f8dbfb268..d051dc2a9b9 100644 --- a/test/mpi/util/mtest_thread_win.h +++ b/test/mpi/util/mtest_thread_win.h @@ -90,3 +90,8 @@ int MTest_thread_lock_free(MTEST_THREAD_LOCK_TYPE * lock) } return MTestReturnValue(errs); } + +int MTest_thread_yield(void) +{ + return 0; +}