Sleep system call e seu parâmetro de tempo

0

Digamos que estamos escrevendo um programa em C que chama a função sleep (). Por exemplo, chamando sleep (7), o thread de chamada seria colocado em suspensão por 7 segundos.

Minha pergunta é: o thread vai acordar após 7 segundos do nosso tempo / relógio, ou pode demorar mais, dado que cada processo tem seu próprio tempo quântico na CPU, porque há muitos processos em execução consecutivamente?

    
por George 16.01.2016 / 00:02

2 respostas

5

A definição de sleep(3) permite que a chamada retorne antes , em ou após a hora especificada:

DESCRIPTION sleep() makes the calling thread sleep until seconds seconds have elapsed or a signal arrives which is not ignored.

Então, temos esses possíveis cenários

  1. A chamada é interrompida com um sinal não detectado. sleep() retorna imediatamente e antes do tempo especificado
  2. A chamada é concluída satisfatoriamente, mas o sistema está tão ocupado que não pode agendar sua tarefa por algum tempo
  3. A chamada é concluída satisfatoriamente e é colocada de volta na fila de execução e executada imediatamente
por 16.01.2016 / 00:08
2

O POSIX garante que um sono ininterrupto e bem-sucedido durará pelo menos o tempo que você solicitar:

link

No Linux, pode demorar mais tempo devido a 1) arredondamento 2) esperando no agendador para colocar o processo / thread na CPU 3) tempo gasto em um estado parado: link

    
por 16.01.2016 / 00:14