From 09192b32b4a09947cc3d1fbc3ad4cebd30cbd5bc Mon Sep 17 00:00:00 2001 From: Tim Woodall Date: Sat, 28 Aug 2004 01:34:48 +0000 Subject: [PATCH] fix for threaded case This commit was SVN r2345. --- src/mca/oob/tcp/oob_tcp_msg.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/mca/oob/tcp/oob_tcp_msg.c b/src/mca/oob/tcp/oob_tcp_msg.c index 64785d3855..6c1382aa1c 100644 --- a/src/mca/oob/tcp/oob_tcp_msg.c +++ b/src/mca/oob/tcp/oob_tcp_msg.c @@ -39,9 +39,24 @@ static void mca_oob_tcp_msg_destruct(mca_oob_tcp_msg_t* msg) int mca_oob_tcp_msg_wait(mca_oob_tcp_msg_t* msg, int* rc) { +#if OMPI_HAVE_THREADS + OMPI_THREAD_LOCK(&msg->msg_lock); + while(msg->msg_complete == false) { + if(ompi_event_progress_thread()) { + OMPI_THREAD_UNLOCK(&msg->msg_lock); + ompi_event_loop(OMPI_EVLOOP_ONCE); + OMPI_THREAD_LOCK(&msg->msg_lock); + } else { + ompi_condition_wait(&msg->msg_condition, &msg->msg_lock); + } + } + OMPI_THREAD_UNLOCK(&msg->msg_lock); + +#else /* wait for message to complete */ while(msg->msg_complete == false) ompi_event_loop(OMPI_EVLOOP_ONCE); +#endif /* return status */ if(NULL != rc) {