如何每隔X分钟送一面旗子

how to send a flag each X minutes?

本文关键字:何每隔 分钟      更新时间:2023-10-16

我正在工作的一种"控制块",每6分钟发送一个标志。问题是,我不知道是否有一个简单的方法来做到这一点。我曾经在循环中使用clock_t,直到它达到6分钟,然后调用一个方法来发送标志并重新初始化clock_t变量。

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

Thanks in advance

你可以让线程休眠6分钟,然后发送flag:

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

下面是一些sleep方法的选项,包括c++ 11的std::this_thread::sleep_for .

您可以简单地使用一个线程函数来打开或关闭一个标志,并每次休眠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

您不需要为此创建一个完整的线程。使用系统操作系统定时回调。