我需要做一些事情(我称之为调度程序),它每分钟检查一次系统的时间,如果时间改变了,假设它是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