2013-04-03 143 views
-1

我不知道關於多線程編程的任何內容,所以想在這裏發佈一個普遍的問題。我怎樣才能做到以下幾點:線程和鎖

的main() 運行的MyMethod每隔30秒

的MyMethod() 1.獲取數據 2.不計算 3.保存結果到文件

哪有在主開始再次運行MyMethod之前,我確保完成了保存結果(MyMethod步驟3)?基本上我必須鎖定該線程,直到MyMethod完成。隨意使用任何語言作爲例子,我更關心這些事情在現實中是如何完成的。

謝謝

+0

除了啓動線程一次,main()還要做什麼嗎?線程不僅可以標記開始時間,執行123,標記結束時間,計算intervalMs =結束開始,如果(30000-intervalMs)不是負數,睡眠(30000-intervalMs),循環返回?自主操作,不鎖定,不同步,啓動線程後不需要主線程動作,啓動多線程的機會爲零。 – 2013-04-04 09:43:43

回答

0

你不需要同步。您只需確保線程工作已完成,因爲保存在最後發生。

#include <thread> 
#include <unistd.h> 


int MyMethod(){ 
    // some code 
} 

int run(){ 
    std::thread thrd(MyMethod); 
    sleep(30); 
    thrd.join(); 
} 

int main(){ 
    while(true) 
     run(); 
} 
+0

非常感謝,它真的幫助了我。 – ilyaw77 2013-04-06 02:29:15

+0

請注意,這段代碼實際上與主線程自行完成工作相同。 – didierc 2013-04-06 07:50:05