Avoid one condition variable in msg-thread impl
authorAdam Dickmeiss <adam@indexdata.dk>
Mon, 15 Aug 2005 12:51:57 +0000 (12:51 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Mon, 15 Aug 2005 12:51:57 +0000 (12:51 +0000)
src/msg-thread.cpp
src/msg-thread.h

index 01373db..0b6d91c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: msg-thread.cpp,v 1.6 2005-08-10 12:42:24 adam Exp $
+/* $Id: msg-thread.cpp,v 1.7 2005-08-15 12:51:57 adam Exp $
    Copyright (c) 1998-2005, Index Data.
 
 This file is part of the yaz-proxy.
@@ -84,7 +84,6 @@ Msg_Thread::Msg_Thread(ISocketObservable *obs)
     pthread_mutex_init(&m_mutex_input_data, 0);
     pthread_cond_init(&m_cond_input_data, 0);
     pthread_mutex_init(&m_mutex_output_data, 0);
-    pthread_cond_init(&m_cond_output_data, 0);
     pthread_create(&m_thread_id, 0, tfunc, this);
 }
 
@@ -101,7 +100,6 @@ Msg_Thread::~Msg_Thread()
 
     pthread_cond_destroy(&m_cond_input_data);
     pthread_mutex_destroy(&m_mutex_input_data);
-    pthread_cond_destroy(&m_cond_output_data);
     pthread_mutex_destroy(&m_mutex_output_data);
     close(m_fd[0]);
     close(m_fd[1]);
@@ -126,7 +124,7 @@ void Msg_Thread::run(void *p)
     while(1)
     {
         pthread_mutex_lock(&m_mutex_input_data);
-        if (!m_stop_flag && m_input.size() == 0)
+        while (!m_stop_flag && m_input.size() == 0)
             pthread_cond_wait(&m_cond_input_data, &m_mutex_input_data);
         if (m_stop_flag)
         {
@@ -139,10 +137,9 @@ void Msg_Thread::run(void *p)
         IMsg_Thread *out = in->handle();
         pthread_mutex_lock(&m_mutex_output_data);
         m_output.enqueue(out);
-        pthread_cond_signal(&m_cond_output_data);
-        pthread_mutex_unlock(&m_mutex_output_data);
         
         write(m_fd[1], "", 1);
+        pthread_mutex_unlock(&m_mutex_output_data);
     }
 }
 
index 9ef89f7..56722d6 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: msg-thread.h,v 1.4 2005-06-25 15:58:33 adam Exp $
+/* $Id: msg-thread.h,v 1.5 2005-08-15 12:51:57 adam Exp $
    Copyright (c) 1998-2005, Index Data.
 
 This file is part of the yaz-proxy.
@@ -70,7 +70,6 @@ private:
     pthread_mutex_t m_mutex_input_data;
     pthread_cond_t m_cond_input_data;
     pthread_mutex_t m_mutex_output_data;
-    pthread_cond_t m_cond_output_data;
     bool m_stop_flag;
 };