我需要做一些事情(我稱之爲調度程序),它每分鐘檢查一次系統的時間,如果時間改變了,假設它是17:52,下一刻它是17:53在17:53它調用一個函數logupdated如何在每隔1分鐘執行C++中的特定代碼
我如何使這只是我不知道的互斥和所有。
感謝
我需要做一些事情(我稱之爲調度程序),它每分鐘檢查一次系統的時間,如果時間改變了,假設它是17:52,下一刻它是17:53在17:53它調用一個函數logupdated如何在每隔1分鐘執行C++中的特定代碼
我如何使這只是我不知道的互斥和所有。
感謝
我不知道我理解的要求,但你的問題上寫着「如何在C++每隔1分鐘後執行一個特定的代碼」,因此,在C++ 11,你可以這樣做:
#include <thread>
#include <chrono>
int main() {
while (true) {
std::this_thread::sleep_for(std::chrono::seconds(60));
// call your c++ code
}
}
@KillianDS好點。我沒有考慮任務本身的持續時間。我猜如果有重疊的可能性,它應該也運行在一個單獨的線程或進程。 – juanchopanza 2012-04-09 13:00:00
:不知道什麼是C++ 11可能是升級版本但是我只有ansi C++和我在一起,im不知道netbeans ide 7.1.1是否支持它 – gandhigcpp 2012-04-09 13:01:20
@gandhigcpp C++ 11是新標準,所以它***是*** C++。但是,目前幾乎沒有編譯器支持。 GCC涵蓋了我包含的代碼片段,但請看@ KillianDS關於'boost'替代品的答案。 – juanchopanza 2012-04-09 13:06:01
如果要使任務的執行獨立於主程序流,請考慮多線程。請注意,有些人認爲我過分使用指針,我同意,特別是多線程,它可能會導致不安全的線程,從而導致數據損壞,甚至更糟糕,分段錯誤。 但是,只要我能找到,這是將參數傳遞給線程的唯一方法。
#include <pthread.h>
int main(int argc, char *argv[]) {
pthread_t thread1;
int variables=10;
pthread_create(&thread1, NULL, scheduler, (void*)&variables);
while(1){
.... do stuff as main program.
}
return 0;
}
void *scheduler (void* variables) {
int vars;
int* p_vars = (int*) variables;
vars = *p_vars;
while (1){
.. do scheduler stuff
sleep (vars);
}
}
首先,決定:您是否想每1分鐘或每分鐘時鐘週期調用一次函數?這些是不同的功能。 – KillianDS 2012-04-09 12:28:47
什麼平臺?在Unix上使用'cron'。 – 2012-04-09 12:29:28
您是否期望這個程序始終在系統的後臺運行?如果你這樣做,你可能想看看unix上的cron-jobs,或者在windows上編寫一個帶有.net框架的windows服務。應用程序在對記錄器的調用之間做了什麼工作?你正在編寫一個多線程的過程? – 2012-04-09 12:30:49