C: Implementação diferente do clock () no Windows e em outro sistema operacional?

Eu tive que escrever um programa de console muito simples para a universidade que precisava medir o tempo necessário para fazer uma entrada.

Para isso eu useiclock() na frente e depois de umfgets()ligar. Ao executar no meu computador Windows, funcionou perfeitamente. No entanto, ao rodar nos meus amigos Mac-Book e Linux-PC, ele deu resultados extremamente pequenos (apenas alguns microssegundos).

Eu tentei o seguinte código em todos os 3 sistemas operacionais:

#include <stdio.h>
#include <time.h>
#include <unistd.h>

void main()
{
    clock_t t;

    printf("Sleeping for a bit\n");

    t = clock();

    // Alternatively some fgets(...)
    usleep(999999);

    t = clock() - t;

    printf("Processor time spent: %lf", ((double)t) / CLOCKS_PER_SEC);
}

No Windows, a saída mostra 1 segundo (ou a quantidade de tempo que você levou para digitar ao usarfgets), nos outros dois sistemas operacionais não muito mais que 0 segundos.

Agora, minha pergunta é por que existe tanta diferença na implementação declock() nesses sistemas operacionais. Para o Windows, parece que o relógio continua correndo enquanto o thread está em espera / espera, mas para Linux e Mac não?

Edit: Obrigado pelas respostas até agora pessoal, por isso é apenas a implementação defeituosa da Microsoft realmente.

Alguém poderia por favor responder a minha última pergunta:

Também existe uma maneira de medir o que eu queria medir nos três sistemas usando bibliotecas C-standard, poisclock() só parece funcionar assim no Windows?

questionAnswers(3)

yourAnswerToTheQuestion