SkillAgentSearch skills...

Gotimer

timer(wheel/heap) implement for go

Install / Use

/learn @gocpp/Gotimer
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

gotimer

examples:

package main

import (
	"fmt"
	"time"

	"github.com/gocpp/gotimer/timeheap"
)

// timer callback
func selectHandler(id uint32) {
	fmt.Printf("timerId:%d now:%v\n", id, time.Now())
}

func main() {
	th := timeheap.New(selectHandler) // time heap
	th.Start()                        // start

	// add timer
	th.AddTimer(1, 1*time.Second, false)

	// wait
	time.Sleep(2 * time.Second)
}
package main

import (
	"fmt"
	"time"

	"github.com/gocpp/gotimer/timeheap"
)

type TimerCb interface {
	Start()
	Stop()
	AddTimer(uint32, time.Duration, bool)
	RemoveTimer(uint32)
}

// timer callback
func selectHandler(id uint32) {
	fmt.Printf("timerId:%d now:%v\n", id, time.Now())
}

func stop(th TimerCb) {
	for i := uint32(1); i <= 5; i++ {
		time.Sleep(1 * time.Second)
		th.RemoveTimer(i)
	}
}

func main() {
	var th TimerCb
	th = timeheap.New(selectHandler) // time heap
	th.Start()                       // start

	// add timer for loop
	for i := uint32(1); i <= 5; i++ {
		th.AddTimer(i, 1*time.Second, true)
	}
	th.AddTimer(6, 6*time.Second, false)

	go stop(th) // stop timer
	select {}
}

Related Skills

View on GitHub
GitHub Stars4
CategoryDevelopment
Updated5y ago
Forks0

Languages

Go

Security Score

55/100

Audited on Jan 17, 2021

No findings