2011-06-21 17 views
1

私のCコードでpthreadを処理しています。私はTHREAD_1から2つの新しいスレッド(THREAD_2、THREAD_3)を作成するルーチンを呼び出して、メインルーチンでスレッド(THREAD_1)を作成して起動します。 3つすべてのスレッドは、条件付きループでミリ秒のスリープと並行して実行されます。特定の条件が満たされた後、私は2つのスレッド(THREAD_2、THREAD_3)を停止してからTHREAD_1を終了したいと思います。 これを行う最善の方法は何ですか?条件変数を使用してpthreadを実行する最善の方法

+0

すべてのスレッドが同じ条件を実行していますか?はいの場合、スレッドのいずれかで条件が満たされた場合は、すべてのスレッドを終了しますか? – Jay

+0

@ジェイ:実際に最初に終わり(THREAD_2とTHREAD_3)、最後にTHREAD_1したいです。その後、メインルーチンを再起動して、THREAD_1を開始してTHREAD_3と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(); 
        } 

      } 

これはこれを実装した方法です。何か問題でも??

関連する問題