Я работаю в своего рода «контрольном блоке», который должен отправлять флаг каждые 6 минут. Дело в том, что я не знаю, есть ли простой способ сделать это. Я использую clock_t внутри цикла, пока он не достигнет 6 минут, а затем вызываю метод, который отправляет флаг и повторно инициализирует переменную clock_t.
Я забыл что-то объяснить, сон не вариант, потому что блок работает как поток, он должен что-то посылать все время. На самом деле флаг изменит то, что отправляет
заранее спасибо
Вы можете просто спать нить в течение 6 минут, а затем отправить флаг:
for(;;)
{
sendFlag();
sleep(6*60);
}
Вот несколько вариантов метода сна, в том числе 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.
Вам не нужна целая тема только для этого. Используйте системный OS периодический таймер обратного вызова.