我不知道關於多線程編程的任何內容,所以想在這裏發佈一個普遍的問題。我怎樣才能做到以下幾點:線程和鎖
的main() 運行的MyMethod每隔30秒
的MyMethod() 1.獲取數據 2.不計算 3.保存結果到文件
哪有在主開始再次運行MyMethod之前,我確保完成了保存結果(MyMethod步驟3)?基本上我必須鎖定該線程,直到MyMethod完成。隨意使用任何語言作爲例子,我更關心這些事情在現實中是如何完成的。
謝謝
我不知道關於多線程編程的任何內容,所以想在這裏發佈一個普遍的問題。我怎樣才能做到以下幾點:線程和鎖
的main() 運行的MyMethod每隔30秒
的MyMethod() 1.獲取數據 2.不計算 3.保存結果到文件
哪有在主開始再次運行MyMethod之前,我確保完成了保存結果(MyMethod步驟3)?基本上我必須鎖定該線程,直到MyMethod完成。隨意使用任何語言作爲例子,我更關心這些事情在現實中是如何完成的。
謝謝
你不需要同步。您只需確保線程工作已完成,因爲保存在最後發生。
#include <thread>
#include <unistd.h>
int MyMethod(){
// some code
}
int run(){
std::thread thrd(MyMethod);
sleep(30);
thrd.join();
}
int main(){
while(true)
run();
}
除了啓動線程一次,main()還要做什麼嗎?線程不僅可以標記開始時間,執行123,標記結束時間,計算intervalMs =結束開始,如果(30000-intervalMs)不是負數,睡眠(30000-intervalMs),循環返回?自主操作,不鎖定,不同步,啓動線程後不需要主線程動作,啓動多線程的機會爲零。 – 2013-04-04 09:43:43