如何每X分钟发送一个标志?

时间:2013-01-11 15:53:25

标签: c++ measurement

我正在使用一种“控制块”,必须每6分钟发送一次标记。问题是我不知道是否有一种简单的方法可以做到这一点。虽然我在循环中使用了clock_t直到达到6分钟,然后调用一个发送标志的方法并重新初始化clock_t变量。

我忘了解释一下,睡觉不是一个选择,因为这个块像流一样工作,它必须一直发送一些东西。实际上,该标志将改变发送的内容

提前致谢

3 个答案:

答案 0 :(得分:1)

你可以让线程睡眠6分钟,然后发送标志:

for(;;)
{
    sendFlag();
    sleep(6*60);
}

Here are some options for the sleep method,包括C ++ 11的std::this_thread::sleep_for

答案 1 :(得分:1)

你可以简单地使用一个线程函数来打开或关闭一个标志并一次睡6分钟。例如:

bool flag = false;

int main() {
    while(true) {
        if (flag == true) {
            flag = false;
        }
    }

    return(0);
}

void threadFunc() {
    flag = true;
    sleep(360); //360 seconds is 6 minutes
}

注意:您需要使用互斥锁或信号量,因为现在编写的代码是非线程安全。如何使用线程也取决于操作系统。除非你当然使用C ++ 11。

答案 2 :(得分:1)

你不需要一个完整的线程。使用系统OS定期计时器回调。