2011-06-20 79 views
1

我有一個遞歸函數,我想要使用Windows線程或增強線程來進行線程化。我有如何做兩種方式的線程的例子,但我不知道如何實現,我的功能。以下是我的增強線程示例。線程函數

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

這將大大簡化你的生活,如果你轉換您的遞歸函數來一個使用一個for循環。 – dave

+6

這個函數不是遞歸的,你究竟想要做什麼?此外,您應該始終偏好高級庫(例如Boost.Thread)到低級庫(例如pthreads,Windows線程API)。 –

+4

我毫不猶豫地承認,我可能會錯過一些東西,但遞歸在哪裏呢? –

回答

0

那麼,你看起來像一個函子 - 我認爲你是一個線程混淆。
要在boost(或windows或pthreads)中創建線程,您只需要一個函數。
這裏是一個很好的參考(這是第一次學習升壓線程,當我使用的)
http://drdobbs.com/cpp/184401518