2010-11-01 1 views
0

Я хочу вызвать функцию бизнес-класса каждые 2 часа. Я не получаю никакого способа реализовать его в C/C++ без использования цикла while. Моя проблема в том, что я не могу использовать while (1), так как это не перенастраивает элемент управления для дальнейшего выполнения.Как реализовать таймер в C/C++

Любой указатель в этом отношении WUD будет полезно .... :)

Thnaks

+1

Ответ будет зависеть от того, на какой платформе вы находитесь. Linux? Окна? Что-то другое? –

+0

Просто любопытно. Что делает ваша программа в течение 2 часов, если она еще не реализована как цикл событий? –

+0

Я пытаюсь добиться этого на Mac Os X, и на самом деле это фоновый процесс, поэтому он работает всегда в backgroung, пока ваша система работает. –

ответ

0

В равнинных С, я бы рассмотрел использование alarm(2) или setitimer(2) функции. В качестве альтернативы, создайте поток и выполните ожидание оттуда.

Если вы определились с маршрутами будильника или сетки, имейте в виду, что вам нужно будет написать обработчики сигналов и может понадобиться цикл отправки, чтобы отметить, что пришло время делать периодические вызовы обслуживания, поскольку это считается плохой практикой сделать довольно много вещей из обработчика сигнала.

0

Для общего решения можно запустить поток, который посылает какое-то сообщение в основной поток через 2 часа.

Для Linux, вы могли бы использовать это:

http://linux.die.net/man/3/alarm

, а затем управлять сигналом SIGALRM