Hello Cristian-san,
Thank you for your information. I tried WIN32_USE_TICKCOUNT.
While running a timer script, I changed the Windows system clock back and forth.
The interval was constant as expected. Great!
----------------
(MinGW)
wget --no-check-certificate
https://core.tcl.tk/tcl/zip/Tcl+Source+Code-965d56c3af.zip?uuid=965d56c3aff59613
./configure --prefix=/c/bin/tcl8.7a0 CFLAGS="-DWIN32_USE_TICKCOUNT"
make install
----------------
C:\bin\tcl8.7a0\bin>type check_timer.tcl
proc start_timer {} {
global tm_last
set tm_last [clock seconds]
tick
}
proc stop_timer {} {
after cancel tick
}
proc tick {} {
global interval tm_last
set tm_now [clock seconds]
set tm_now_s [clock format $tm_now]
set elapse(sec) [expr {$tm_now - $tm_last}]
puts "\[$tm_now_s\] tick elapse(sec)=$elapse(sec)"
set tm_last $tm_now
after $interval tick
}
set interval 3000
start_timer
vwait forever
C:\bin\tcl8.7a0\bin>tclsh87.exe check_timer.tcl
[Thu Sep 29 10:07:36 JST 2016] tick elapse(sec)=0
[Thu Sep 29 10:07:39 JST 2016] tick elapse(sec)=3
[Thu Sep 29 10:07:42 JST 2016] tick elapse(sec)=3
[Thu Sep 29 10:07:45 JST 2016] tick elapse(sec)=3
[Thu Sep 29 10:07:48 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:07:50 JST 2016] tick elapse(sec)=-86398
[Wed Sep 28 10:07:53 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:07:56 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:07:59 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:08:02 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:08:05 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:08:08 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:08:11 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:08:14 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:08:17 JST 2016] tick elapse(sec)=3
[Thu Sep 29 10:08:19 JST 2016] tick elapse(sec)=86402
[Thu Sep 29 10:08:22 JST 2016] tick elapse(sec)=3
[Thu Sep 29 10:08:25 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:08:27 JST 2016] tick elapse(sec)=-86398
[Wed Sep 28 10:08:30 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:08:33 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:08:36 JST 2016] tick elapse(sec)=3
[Wed Sep 28 10:08:40 JST 2016] tick elapse(sec)=4
[Thu Sep 29 10:08:42 JST 2016] tick elapse(sec)=86402
[Thu Sep 29 10:08:45 JST 2016] tick elapse(sec)=3
[Thu Sep 29 10:08:48 JST 2016] tick elapse(sec)=3
----------------
Regards,
Yusuke