2011-06-21 62 views
1

我在我的c代碼中使用pthreads。我在我的主例程中創建並啓動一個線程(THREAD_1),從THREAD_1開始,我調用例程來創建兩個新線程(THREAD_2,THREAD_3)。所有這三個線程將在毫秒級並行運行,並在條件循環中休眠。在滿足某個條件後,我想停止/退出兩個線程(THREAD_2,THREAD_3),然後是THREAD_1。 這樣做的最好方法是什麼?使用條件變量停止運行pthreads的最佳方法

+0

所有線程是否執行相同的條件?如果是的話,如果在任何線程中都滿足條件,那麼你想退出所有的線程? – Jay

+0

@Jay:其實我想先結束(THREAD_2和THREAD_3),然後是THREAD_1。之後,我想重新啓動我的主程序,我想再次啓動THREAD_1,從而啓動THREAD2和THREAD_3 – Devb

回答

0
  while(true){ 
        apr_thread_mutex_lock(mySharedObject->getMutex()); 
        while (mySharedObject->getMessagesReady() == 0 && !mySharedObject->getEndThread()) { 
          apr_thread_cond_wait(mySharedObject->getCond(), mySharedObject->getMutex()); 
        } 
        if (mySharedObject->getEndThread()){ 
          apr_thread_mutex_unlock(mySharedObject->getMutex()); 
          break; 
        } 

        apr_thread_mutex_unlock(mySharedObject->getMutex()); 

        if (mySharedObject->getMessagesReady()>0){ 
          myActiveProducer->send(); 
        } 

      } 

這是我實施它的方式。有問題??

相關問題