C/C++. Таймер с ожиданием внешней реакции

Как во время отсчета таймера параллельно ожидать реакции от пользователя (нажатие клавиши на клавиатуре) для инициирования других действий?

Есть такая функция в библиотеке <conio.h> - int kbhit(void), которая возвращает ненулевое значение, если клавиша нажата и возвращает 0, если не нажата.

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

Обновление показателя счетчика таймера происходит путем возврата каретки и перезаписи предыдущего значения. По-сути - simple animation :)

Основа таймера зиждиться на функции Sleep(int miliseconds) библиотеки <windows.h>

#include <conio.h>
#include <stdio.h>
#include <windows.h>

int main() {

    // Счетчик для таймера
    int count = 10;
    //    Для проверки нажатия клавиши клавиатуры
    int result;
    // Флаг вывода сообщения о типе остановки таймера
    bool showIt = true;

   
    printf("Press any key to stop timer\n");
    // Для обновления вывода таймера воспользуемся возвратом каретки \r
    printf("10\r");

    while(count >= 0) {
       
        // Проверка нажатия клавиши клавиатуры. При нажатии возвращает ненулевое значение, иначе - return 0
        if(result = kbhit()) {
            printf("Таймер остановлен вручную\n");
            showIt = false;
            break;
        }

        count--;
        // Ожидание в 1 секунду
        Sleep(1000);
        printf("%d \r", count);               
    }

    if(showIt) {
        printf("Таймер остановлен автоматически\n");
    }

}