Sintaxe:
A figura acima indica a sintaxe da função nanosleep e é definida no arquivo de cabeçalho.
RQTP: O RQTP é um ponteiro do Timespec, que indica o intervalo de tempo para o qual o usuário deseja suspender ou pausar o thread/programa.
Rmtp: O RMTP é um ponteiro do Timespec que indica que a função armazenou o período que permanece no intervalo.
O tempo da estrutura é utilizado para identificar intervalos de tempo no nível de nanossegundos.
Objetivo de usar nanosleep () em c
Nanosleep é uma interface portátil do sistema operacional. É uma chamada compatível com o sistema para suspender um fio específico da execução de um programa por uma quantidade específica de tempo. Funções semelhantes também estão disponíveis para o mesmo objetivo. O sono é um daqueles processos que leva segundos para suspender o programa, mas diz-se que fornece suspensão de baixa resolução. Portanto, a função Nanosleep concede permissão ao usuário para fornecer o tempo de sono em nanossegundos para melhor precisão.
Anteriormente, o método nanosleep () era usado para lidar com pausas de até 2 ms quando chamadas dos threads programados, mas exigiria mais precisão para lidar com hardware ou aplicativos críticos do tempo.
Valor de retorno
Erros
Se a extensão determinada no RQTP é outra coisa senão uma diferença precisa do relógio oculto da granularidade, ele será coletado. Além disso, pode haver um adiamento mais tarde se o restante do trabalho terminar antes que a CPU puder executar a string de chamada mais uma vez.
Como o método Nanosleep não funciona para um período relativo, tende a ser arriscado se o método for chamado repetidamente depois de enfrentar obstáculos ou interrupções por sinais, porque o tempo entre interrupções do sinal e a chamada de reinicialização causará uma ligeira mudança quando o sono acabamentos. Use o relógio Nanosleep (2) com um valor temporal total para ficar longe deste problema.
Nanosleep () deve quantificar o tempo com o relógio em tempo real do oponente, conforme Posix.1. Linux, mais uma vez, utiliza o relógio do relógio para monitorar o tempo. Isso é presumivelmente imaterial porque o posix.1 Relógio Settime (2) expressa particularmente que as mudanças espasmódicas no relógio em tempo real não devem influenciar o Nanosleep ().
Se definirmos o valor do relógio em tempo real via setTime (2). Isso não terá nenhum efeito nos programas bloqueados e esperando na fila por um tempo relativo com base neste relógio.
Exemplo em c
Primeiro de tudo, tivemos que inicializar a biblioteca que tem a estrutura de um ponteiro de tempo de solicitação do tempo e um ponteiro de tempo restante do tempo. Existem dois ponteiros que armazenam a quantidade de tempo que o usuário deseja suspender o programa e também o tempo restante para que o tempo de intervalo de parada saiu.
Depois disso, começamos nosso corpo principal e temos que criar dois objetos do Timespec que conterão nossa solicitação e o tempo restante. Poderíamos atribuir qualquer valor a esses dois objetos, mas no nosso caso, escolhemos 3 segundos e 500 nanossegundos.
Agora, passaremos os endereços dos objetos criados para o Nanosleep, como você pode observar na linha número 10. Também verificaremos se o programa foi bem -sucedido ou falhou observando o valor de retorno do método nanosleep.
O programa acima imprimirá a seguinte saída se for executado com sucesso:
Se alterarmos o valor da resposta para 1 a execução do programa falhará e produzirá o seguinte erro como saída.
Agora, se queremos executar o seguinte código em nosso terminal GCC. Primeiro, salvaremos nosso arquivo como principal.c e depois use o seguinte comando no seu terminal para executar o programa: “GCC-WALL PRINCIPAL.c-o ”. Uma parede significa ativar todas as mensagens de aviso ao executar nosso programa.
INSETOS
A execução atual do nanosleep () depende do componente típico do relógio de bits, que tem um objetivo de 1/Hz s. Nesse sentido, o nanosleep () pára de forma consistente pelo tempo predefinido, mas pode levar até 10 ms a mais do que o indicado até que a interação se torne correr mais uma vez. Para uma explicação semelhante, o valor retornado no caso de um sinal transmitido em *rmtp e é normalmente ajustado à seguinte diferença maior de 1/hz s.
Justificativa:
É normal suspender a execução de uma string por algum tempo para pesquisar a situação com o objetivo de um trabalho não introduzido. Inúmeras necessidades reais podem ser atendidas com uma extensão direta para dormir () que dá uma meta melhor.
No posix.1-1990 NORM e SVR4, é viável executar uma prática cotidiana, exceto que a recorrência do despertar é restrita pelo objetivo do alarme () e do sono () funções. É provável que escreva esse padrão em 4.3 BSD, enquanto utiliza nenhum estoque estático e poupando nenhum escritório de estrutura. Embora seja viável compor uma função com utilidade comparável ao sono () utilizando o restante do timer_* () capacidades, essa capacidade requer a utilização de sinais e a reserva de algum número significativo. Este volume de IEEE std 1003.1-2001 precisa de que o nanosleep () seja não-medledsome se os sinais funcionarem.
O trabalho nanosleep () retornará um valor de 0 no progresso e - 1 na falha, ou novamente sempre que interferiu em. Este último caso de opção não é o mesmo que o sono (). Isso foi feito à luz do fato de que o tempo restante é devolvido, utilizando um ponteiro da estrutura de contenção, RMTP, e não como uma maneira de trazer a aprovação de volta.
Conclusão
O foco desta pesquisa foi ajudá -lo a desenvolver uma melhor compreensão do método Nanosleep (). Para ter um bom controle de métodos como o Nanosleep, é necessário ilustrá -los com o exemplo mais simples. Ficamos o nosso melhor para fornecer as melhores informações, como bugs, lógica, exemplos, erros e sinopse. Para que você possa continuar melhorando a interpretabilidade e a reutilização do seu código. Nós analisamos uma explicação simples de sintaxe. O artigo o ajudará a obter rapidamente uma interpretação completa de como usar o nanosleep () como um método. Para fazer um uso muito melhor do método, considerações como variáveis foram abordadas e bem explicadas para os usuários.