Pretty much what Kurtis said. Low interval timers usually require specialized constructs if not a real time OS to efficiently (or even at all).
> On Jan 30, 2022, at 9:16 PM, envee <neeraj.vaidy...@gmail.com> wrote: > > Thanks, but I am not sure how that reference solves the issue ? > Or are you suggesting that the only way is to use Cgo and invoke usleep to > get very close to the Ticker duration specified ? > >> On Monday, 31 January 2022 at 11:25:58 UTC+11 ren...@ix.netcom.com wrote: >> See https://github.com/golang/go/issues/27707 >> >>>> On Jan 30, 2022, at 5:50 PM, envee <neeraj....@gmail.com> wrote: >>>> >>> Hi All, >> >>> I understand this issue has been discussed in the past, and I have seen a >>> few comments from Ian and Russ Cox about this topic, but I could not arrive >>> at a conclusion about how I can make the time.Ticker send me ticks at >>> atleast close to the Ticker duration I specify. At the moment, I am seeing >>> ticks being sent at way over the specified duration especially when I have >>> sub-millisecond durations. >>> With 1ms duration, the ticker seems to be quite close to the duration >>> (maybe within +/-5%). I would be happier if it were within 1%, but I can >>> handle that. >>> >>> With 1 micro-second duration, the ticker sends ticks nearly 4 times slower >>> than expected. >>> >>> Here is my sample code >>> " >>> ti := time.NewTicker(1 * time.Millisecond) >>> start := time.Now() >>> for i := 0; i < 1000; i++ { >>> <-ti.C >>> } >>> fmt.Printf("elapsed time = %v\n", time.Since(start)) >>> " >>> >>> The output is usually close to 1 second as expected (close to) when using >>> 1ms duration. >>> elapsed time = 1.000159338s >>> >>> >>> My code for the microsecond test is : >>> " >>> ti := time.NewTicker(1 * time.Microsecond) >>> start := time.Now() >>> for i := 0; i < 1000000; i++ { >>> <-ti.C >>> } >>> fmt.Printf("elapsed time = %v\n", time.Since(start)) >>> " >>> >>> With this, I get the following output which shows the elapsed time close to >>> 4 seconds : >>> elapsed time = 4.796662856s >>> >>> Is there anyway, I can ensure ticks are sent at approximately within 5% of >>> my specified duration ? >>> >>> I understand from time.Ticker docs that ticks will be lost if the ticker >>> handler cannot keep up with the ticker time. >>> >>> In the simple code above, I am literally doing very minimal work in each >>> loop iteration and that is about checking the loop condition. >>> So I am not sure why ticks are being lost ? >> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to golang-nuts...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/5f55ccf9-1478-4490-a8f4-a35a5764721dn%40googlegroups.com. > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/efa204c2-092f-46e1-abe4-8aa5c502d986n%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/9070D322-8F84-4033-8205-DAF6CE0A9D18%40ix.netcom.com.