Аналогия
Посмотрите здесь краткое объяснение функций обратного вызова:
Что такое «обратный вызов» в C и как они реализованы?
Использование таймера с обратным вызовом будет означать «вызов функции x каждые y секунд», а с системой, поддерживающей многозадачность, эта функция будет вызываться каждые y секунд во втором потоке выполнения, независимо от того, что может исходная функция делать.
Редактировать: Как было предложено в другом ответе, система может не создать второй поток для вас, в этом случае вам придется создать поток самостоятельно и настроить обратный вызов из этого потока.
Редактировать: в Windows вы можете использовать функцию SetTimer . Он отправит сообщение WM_TIMER в очередь сообщений вашего окна, которую ваш цикл сообщений может обработать сам или передать в процедуру сообщения по умолчанию для вызова функции обратного вызова, которую вы указали. Я не уверен, что произойдет, если у вас нет окна, но попробуйте.