📚 tik - Awesome Go Library for Utilities

Go Gopher mascot for tik

Simple and easy timing wheel package for Go

🏷️ Utilities
📂 Utilities
0 stars
View on GitHub 🔗

Detailed Description of tik

tik

Documentation GitHub issues license Release


hierarchical timing wheel made easy

simplified version of timeout in Golang

for documentation, view the API reference

Install

go get github.com/andy2046/tik

Usage

package main

import (
	"sync"
	"time"

	"github.com/andy2046/tik"
)

func main() {
	var l sync.RWMutex
	// init a new instance
	tk := tik.New()
	i := 0
	cb := func() {
		l.Lock()
		i++
		l.Unlock()
	}
	// schedule to run cb in 500ms
	to := tk.Schedule(500, cb)

	if !to.Pending() {
		panic("it should be pending")
	}

	if to.Expired() {
		panic("it should NOT be expired")
	}

	for {
		time.Sleep(100 * time.Millisecond)

		if tk.AnyPending() {
			continue
		}

		if tk.AnyExpired() {
			continue
		}

		break
	}

	l.RLock()
	defer l.RUnlock()

	if i != 1 {
		panic("fail to callback", i)
	}
}