![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| HP-UX HP-UX (Hewlett Packard Unix) è di Hewlett-Packard proprietario di attuazione del sistema operativo Unix, basati su System V. |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| aggiungere l'output di una query a una variabile per essere utilizzata in un altro query | hazno | Shell scripting e di programmazione | 0 | 03-24-2009 08:52 PM |
| Mac OS X: Perché il vostro Mac potrebbe non dormire o di soggiorno in modalità sleep | iBot | OS X, supporto RSS | 0 | 03-19-2009 10:50 PM |
| localtime per convertire unixtime | AshishK | UNIX e avanzata per utenti esperti | 2 | 10-30-2007 10:22 AM |
| Perl + localtime () | Optimus_P | Shell scripting e di programmazione | 3 | 07-09-2003 06:32 PM |
| sonno | Anna | UNIX for Dummies Domande & Risposte | 5 | 07-11-2001 12:52 AM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread |
Rating:
|
Modalità di visualizzazione |
|
|
|
||||
|
Stop & query localtime
Salve,
I lavori in applicazione HPUX e ho avuto una query per quanto riguarda il sonno e la chiamata di sistema localtime in HPUX. Qui è il codice che abbiamo: const uint32_t WAKE_INTERVAL_SEC (30 * 60); while (true) ( / / Per saperne di ciò che ora è tempo (e corrente); / / Thread di allineare con orologio sveglia 30 minuti cioè se è attualmente 9:20 sveglia dopo 10 minuti, / / Se è attualmente 9:05, svegliati dopo 25 minuti. / / Calcolare il numero di secondi in questa mezz'ora. sleepTime \u003d WAKE_INTERVAL_SEC - (corrente WAKE_INTERVAL_SEC%); while (1) ( sleep (sleepTime); / / Do lavoro regolare tptr \u003d localtime (& corrente); se (12 \u003d\u003d tptr-> tm_hour & & tptr-> tm_min <WAKE_INTERVAL_MIN) ( / / Mezzogiorno il lavoro da fare ) ) Comportamento: Come indicato nel codice di cui sopra, ci aspettiamo che ogni mezz'ora, un po 'di lavoro da fare, e se succede che il tempo di essere tra le 12 e le 12:30 am poi facciamo anche mezzogiorno lavoro. Comportamento: La maggior parte delle volte funziona come previsto. Ma alcune volte, il sonno sembra uscire da un qualche secondo prima di 12:30 e così non la logica e il mezzogiorno di lavoro. Idealmente mi aspetterei che il lavoro mezzogiorno condizione a fallire, poiché thread ha svegliato alle 12.30 e quindi non può lavorare a mezzogiorno satisify condizione. (Trace in syslog indica che il lavoro è iniziato alle 12.30, ma la registrazione stessa avrebbe preso un po 'di tempo e ho il sospetto di sonno potrebbe avere svegliato presto) Domanda: - Posso dormire svegliarsi prima che il calendario tempo (diversi da quelli SIGALRM)? Ci sono altre condizioni in cui il sonno potrebbe svegliarsi prima dell'orario previsto per tempo? - Posso localtime utilizzati per il confronto di ritorno ora sbagliata? - E 'possibile che ci siano un po' di tempo gli adeguamenti fatto internamente (può essere per il clock interno deriva etc) che si traduce in sonno svegliarsi un secondo prima del previsto orario locale o facendo una sorta di adeguamento, per qualche motivo? Eventuali ingressi a tale riguardo sono apprezzati. Grazie e saluti, NSV |
|
||||
|
Ciao Jim,
Grazie per la risposta. In realtà fili può svegliare in qualsiasi momento sulla base del programmatore, in modo che la logica è stato il tempo per verificare il thread ha bisogno di dormire in modo che la sua linea con intervalli di 30 minuti. Per quanto riguarda, nsvora |
|
||||
|
Ho cercato di trasmettere chiaramente:
Non è possibile garantire ESATTAMENTE come è lungo sonno. È necessario aggiungere alcune slop (fudge fattore) nel suo secondo calcolo in un modo o nell'altro, non è andare a lavorare perfettamente in ogni tempo - si presume che si sono POSIX compatibile tempo - vale a dire., nessun salto secondi.: Codice:
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); Codice:
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 |
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|