Как запустить функцию в определенное время в C++?

можно ли вызвать функцию в определенное время в C++? Например, я хотел бы запустить функцию doIt (), когда number_of_elapsed_milliseconds_since_application_start = x.

кросс-платформенное решение, было бы идеально.

3 ответов


в чистом C++, вероятно, нет, вам понадобится определенный код ОС. Но вы можете использовать независимую от платформы оболочку ОС, такую как Qt (хотя это может быть немного перебором для вашей довольно простой проблемы).

EDIT: самое простое, что вы могли бы сделать, это активно блокировать программу в цикле, который постоянно опрашивает текущее время, пока не будет достигнут крайний срок, но это, вероятно, не очень полезное решение. Таким образом, без потоков или некоторого управляемого событиями таймера (как любая ОС должна иметь), вы не получите очень далеко.


сделайте поток, поместите его в спящий режим до этого времени, а после сна запустите эту функцию.


Это то, что считается функцией "обратного вызова" или "слушателем". Более подробную информацию о его реализации можно найти здесь: http://www.cprogramming.com/tutorial/function-pointers.html

надеюсь, это поможет.