![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| HP-UX HP-UX (Hewlett Packard Unix) Hewlett-Packard é propriedade da aplicação do sistema operativo Unix, baseado no Sistema de V. |
Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
|
||||
| Fio | Thread Starter | Fórum | Respostas | Última postagem |
| adicione a saída de uma consulta para uma variável para ser utilizado em outra consulta | hazno | Programação Shell Script e | 0 | 03-24-2009 08:52 |
| Mac OS X: Por que o Mac pode não dormir ou permanecer na modalidade do sono | iBot | OS X suporte RSS | 0 | 03-19-2009 10:50 |
| localtime para converter unixtime | AshishK | UNIX & avançada para usuários experientes | 2 | 10-30-2007 10:22 |
| Perl + localtime () | Optimus_P | Programação Shell Script e | 3 | 07-09-2003 06:32 |
| dormir | Anna | UNIX para Dummies Perguntas & Respostas | 5 | 07-11-2001 12:52 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread |
Avaliação:
|
Display Modes |
|
|
|
||||
|
sono localtime & query
Oi,
Eu trabalho em HPUX aplicação e eu tinha uma dúvida quanto ao sono & localtime chamada de sistema em HPUX. Aqui está o código que temos: const uint32_t WAKE_INTERVAL_SEC (30 * 60); while (true) ( / / Saiba que horas são tempo (& currentTime); / / Thread para alinhar a acordar com relógio 30 minutos ou seja, se está actualmente 9:20 despertar após 10 minutos, / / Se é actualmente 9:05, acorda-se depois de 25 minutos. / / Calcular restante número de segundos nesta meia hora. sleepTime \u003d WAKE_INTERVAL_SEC - (currentTime WAKE_INTERVAL_SEC%); while (1) ( sono (sleepTime); / / Do trabalho regular tptr \u003d localtime (& currentTime); if (12 \u003d\u003d tptr-> tm_hour & & tptr-> tm_min <WAKE_INTERVAL_MIN) ( / / Noon trabalho a ser feito ) ) Comportamento esperado: Tal como previsto no código acima, nós esperamos que cada meia hora, algum trabalho a ser feito, e se esse tempo passa a ser entre 12 e 12:30 horas, então nós também fazer trabalhos. Comportamento real: Na maioria das vezes ele funciona como o esperado. Mas algumas vezes, parece dormir para sair de alguns segundos antes de 12:30 e, portanto, a lógica falha e faz o trabalho meio-dia. Idealmente gostaria de esperar que a condição noon trabalho a falhar, uma vez que a discussão tem acordou 12:30 e, por conseguinte, não pode trabalhar satisify noon condição. (Trace no syslog indica que o trabalho regular foi iniciada em 12:30, mas ela própria madeireira teria tomado algum tempo, e eu suspeito sono poderia ter acordado cedo) Pergunta: - Posso dormir despertar antes do horário do tempo (com excepção SIGALRM)? Existem outras condições em que poderia dormir antes da hora programada despertar? - Posso localtime utilizados para comparação retorno hora errada? - É possível que haja algum tempo ajustamentos feito internamente (pode ser para o relógio interno de deriva, etc), que resulta em sono despertar um segundo mais cedo do que esperava a hora local ou fazer algum tipo de ajuste, por algum motivo? Todas as entradas nesta matéria são apreciados. Thanks & Regards, NSV |
|
||||
|
Jim oi,
Obrigado pela resposta. Na verdade threads podem despertar qualquer momento, baseado no programador, de modo que a lógica foi o de verificar o momento em que a discussão precisa dormir para que o seu alinhamento com 30 minutos intervalo. With Regards, nsvora |
|
||||
|
Tentei transmitir esta claramente: Você não pode garantir o sono é exactamente quanto tempo. Você tem que adicionar algumas poça (atamancar fator) no seu cálculo segundo uma maneira ou de outra, ela não vai trabalhar perfeitamente cada vez - exemplo assume que você tem POSIX compliant tempo - ou seja,., no segundo salto.: Código:
calculate duration of sleep: time_t how_long_to_sleep=1800; how_long_to_sleep-= time(NULL) % 1800; sleep(!how_long_to_sleep ? 1800 : how_long_to_sleep); tempo de ensaio após acordar: Código:
time_t now=time(NULL); now=now % 1800; if( now < 2 && now > 1797) // sleep period ended close enough else // sleep period is off by too much fi Você também pode tentar usleep (valor), que tem melhor granularidade na MS, mas novamente o valor é o mínimo. Pode ser mais longo. Por exemplo, uma prioridade maior do que essa uma tarefa está sendo executada. |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|