Calcolare il tempo trascorso mediante le funzioni esterne del sub-sistema Timers del API di GLib

Da Gambas-it.org - Wikipedia.

Il sotto-sistema Timers della libreria GLib fornisce funzioni per tenere traccia del tempo trascorso da un momento iniziale ad uno finale stabiliti dall'utente.
E' possibile ottenere anche una definizione sino al "microsecondo".

Per poter fruire delle risorse del sub-sistema Timers, è necessario richiamare nell'applicazione Gambas la libreria condivisa: "libglib-2.0.so.0.7200.4 "

Mostriamo un semplice esempio in ambiente grafico:

Private tempus As Pointer


Library "libglib-2.0:0.7200.4"   ' oppure: libgio-2.0:0.6400.6

' GTimer * g_timer_new (void)
' Creates a new timer, and starts timing is implicitly called.
Private Extern g_timer_new() As Pointer

' void g_timer_stop (GTimer *timer)
' Marks an end time.
Private Extern g_timer_stop(GTimer As Pointer)

' gdouble g_timer_elapsed (GTimer *timer,  gulong *microseconds)
' Returns the number of seconds elapsed, including any fractional part.
Private Extern g_timer_elapsed(GTimer As Pointer, microseconds As Pointer) As Float

' void g_timer_destroy (GTimer *timer)
' Destroys a timer, freeing associated resources.
Private Extern g_timer_destroy(GTimer As Pointer)


Public Sub Form_Open()
 
 Button1.Text = "Avvia"
 Button2.Text = "Tempo trascorso"
       
End


Public Sub Button1_Click()   ' Avvia il conteggio

 tempus = g_timer_new() 

End


Public Sub Button2_Click()   ' Segna l'ultimo conteggio e calcola la differenza con quello iniziale

 Dim ms As Long
 
 g_timer_stop(tempus)
  
 Print "Tempo trascorso: "; g_timer_elapsed(tempus, VarPtr(ms))
  
 Print "Lettura dei microsecondi: "; ms

 g_timer_destroy(tempus)

End


Riferimenti