我正在一种“控制块”中工作,它必须每 6 分钟发送一个标志。问题是我不知道是否有一种简单的方法可以做到这一点。我已经在循环中使用clock_t,直到它达到6分钟,然后调用一个发送标志并重新初始化clock_t变量的方法。
我忘了解释什么,睡眠不是一个选项,因为这个块就像一个流一样工作,它必须一直发送一些东西。实际上,标志会改变发送的内容
提前致谢
我正在一种“控制块”中工作,它必须每 6 分钟发送一个标志。问题是我不知道是否有一种简单的方法可以做到这一点。我已经在循环中使用clock_t,直到它达到6分钟,然后调用一个发送标志并重新初始化clock_t变量的方法。
我忘了解释什么,睡眠不是一个选项,因为这个块就像一个流一样工作,它必须一直发送一些东西。实际上,标志会改变发送的内容
提前致谢
您可以让线程休眠 6 分钟,然后发送标志:
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。