C++ itimerval计时器重新启动和停止

C++ itimerval计时器重新启动和停止,c++,timer,C++,Timer,如何停止计时器并给它一个新的过期时间 计时器结束后如何重新启动 如何从信号处理程序(handler_func)重新启动计时器 例如: struct sigaction real_sa; struct itimerval real_timer; real_sa.sa_handler = &handler_func; if (sigaction(SIGALRM, &real_sa,NULL) < 0) { std::cerr << "system erro

如何停止计时器并给它一个新的过期时间

计时器结束后如何重新启动

如何从信号处理程序(handler_func)重新启动计时器

例如:

struct sigaction real_sa;
struct itimerval real_timer;
real_sa.sa_handler = &handler_func;

if (sigaction(SIGALRM, &real_sa,NULL) < 0) {
    std::cerr << "system error: sigaction error\\n" <<
              std::endl;
    exit(1);
}
real_timer.it_value.tv_sec = (absolute_time/1000000);
real_timer.it_value.tv_usec = (absolute_time % 1000000);
if (setitimer (ITIMER_REAL, &real_timer, NULL))
{
    std::cerr << "system error: setitimer error\\n" <<
              std::endl;
    exit(1);
}
struct sigaction real_sa;
结构itimerval实时定时器;
real_sa.sa_handler=&handler_func;
if(sigaction(SIGALRM和real_sa,NULL)<0){
标准:cerr
如何停止计时器并给它一个新的过期时间

通过使用归零的
it\u值调用
setitimer
(在手册页中)

计时器结束后如何重新启动

再次调用
setitimer

如何从信号处理程序(handler_func)重新启动计时器


<>你不应该。它不是保证异步信号。你可以发送一个消息给你的线程重新启动它。

你能给出更多的上下文,你使用的是哪个特定的框架。既不是<代码> SIGATS< < /> >也不是代码> iTimeValue/Cuth>是标准C++类型。我使用iTimeValm来设置计时器,当计时器通过时,我们为使用handler_func而对sigaction进行签名-表示时间经过函数“handle_func”时会被调用,我希望我能够清除我自己,如果不是,我会尝试解释自己。我怀疑你正在开发Linux环境下的代码,但这不清楚你的问题。正如上面提到的,这些类型不受标准C++支持。添加额外的标签或添加一些解释,这些类型来自哪里。“归零it_值”表示当stop_定时器为:stop_定时器.it_值.tv_秒=0;stop_定时器.it_值.tv_usec=0时,通过调用setitimer和stop_定时器;