как отправить флаг каждые Х минут?

Я работаю в своего рода «контрольном блоке», который должен отправлять флаг каждые 6 минут. Дело в том, что я не знаю, есть ли простой способ сделать это. Я использую clock_t внутри цикла, пока он не достигнет 6 минут, а затем вызываю метод, который отправляет флаг и повторно инициализирует переменную clock_t.

Я забыл что-то объяснить, сон не вариант, потому что блок работает как поток, он должен что-то посылать все время. На самом деле флаг изменит то, что отправляет

заранее спасибо

-1

Решение

Вы можете просто спать нить в течение 6 минут, а затем отправить флаг:

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

Вот несколько вариантов метода сна, в том числе C ++ 11 std::this_thread::sleep_for.

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.

1

Вам не нужна целая тема только для этого. Используйте системный OS периодический таймер обратного вызова.

1
По вопросам рекламы [email protected]