2011-06-20 7 views
1

私は、ウィンドウのスレッド化またはブーストのスレッド化を使用して、スレッド化したい再帰関数を持っています。私は両方の方法でスレッドを行う方法の例を持っていますが、どちらかを実装する方法がわかりません。以下は私のブースティングの例です。関数をスレッドする

struct ThreadDemo { 
    ThreadDemo(int secs) : secs_(secs) { } 

    void operator() (void) { 
     boost::xtime xt; 
     boost::xtime_get(&xt, boost::TIME_UTC); 
     xt.sec += secs_; 
     boost::thread::sleep(xt); 
     { 
      boost::mutex::scoped_lock lock(printing); 
      cout << "Thread ended..." << endl; 
     } 
    } 
}; 

私はちょうどそれがどのように機能するかについては100%確実ではないけど、君たちは私がそれをよりよく理解するのに役立つことができれば、私はうまくいけば自分で自分の関数に実装することができます。

+3

あなたがループに使用するものにあなたの再帰関数を変換する場合、それが大幅にあなたの人生を簡素化します(これは、最初のブーストスレッドを学習するときに私が使用したものである)です。 – dave

+6

この関数は再帰的ではありません。正確に何をしようとしていますか?また、低レベルのライブラリ(たとえば、pthread、WindowsのスレッディングAPI)には、高レベルのライブラリ(Boost.Threadなど)を優先する必要があります。 –

+4

私はちょうど何かを見逃しているかもしれませんが、ここで再帰はどこですか? –

答えて

0

あなたはファンクタのように見えますが、あなたはそれをスレッドと混同していると思います。
ブースト(またはウィンドウ、またはpthread)でスレッドを作成するには、すべて機能が必要です。
はここで素晴らしい参照
http://drdobbs.com/cpp/184401518

関連する問題