Nanosleep()
Da Gambas-it.org - Wikipedia.
Versione del 9 set 2014 alle 01:44 di Vuott (Discussione | contributi) (Creata pagina con 'La funzione della libreria di C int nanosleep(const struct timespec *req, struct timespec *rem); sospende l'esecuzione del programma per intervalli di ''nanosecondi'' (miliar...')
La funzione della libreria di C
int nanosleep(const struct timespec *req, struct timespec *rem);
sospende l'esecuzione del programma per intervalli di nanosecondi (miliardesimi di secondi).
Questa funzione prevede come parametri una Struttura per specificare gli intervalli di tempo con una precisione al nanosecondo:
struct timespec { time_t tv_sec; /* secondi */ long tv_nsec; /* nanosecondi */ };
Il parametro dei nanosecondi va espresso in un ambito compreso fra 0 e 999999999.
Con particolare riferimento alla suddetta Struttura timespec va rilevato che nanosleep() sospende l'esecuzione del programma almeno tutto il tempo specificato nel membro *req della Struttura.
Pertanto, in Gambas utilizzeremo il primo parametro (*req) della Struttura timespec, nonché dichiareremo:
- la predetta Struttura timespec:
Public Struct nsleep tv_sec As Integer tv_nsec As Long End Struct
- la funzione nanosleep() con Extern e la libreria di C: libc.so.6, nella quale la funzione è contenuta:
' int nanosleep(const struct timespec *req, struct timespec *rem); Private Extern nanosleep(req As Nsleep, rem As Nsleep) As Integer In "libc:6"
Semplice esempio di uso in Gambas:
Public Struct nsleep tv_sec As Integer tv_nsec As Long End Struct ' int nanosleep(const struct timespec *req, struct timespec *rem); Private Extern nanosleep(req As Nsleep, rem As Nsleep) As Integer In "libc:6" Public Sub Main() Dim i As Integer Dim ns As New Nsleep ' Imposta un ritardo di 999 nanosecondi (999 miliardesimi di secondo): With ns .tv_sec = 0 .tv_nsec = 999 End With While True ' Sospende l'esecuzione per 999 nanosecondi: nanosleep(ns, Null) Inc i Print i Wend End