Skip to content

Counterflowwind/timewheel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

timewheel

golang实现单层时间轮

使用方法

package timewheel

import (
	"fmt"
	"log"
	"testing"
	"time"
)

func TestNewTimeWheel(t *testing.T) {
	timeWheel, err := NewTimeWheel(15, func(k interface{}) {
		fmt.Println("this is global execute ", k)
	})
	if err != nil {
		log.Fatal(err)
	}

	value := 3
	task := NewTask("pjytest", &value, func(k interface{}) {
		num := k.(*int)
		*num++
		fmt.Println(*num)
	}, 20, time.Second*5)
	timeWheel.SetTask(task)

	task2 := NewTask("pjytest2", "pjy666", func(k interface{}) {
		str := k.(string)
		fmt.Println(str)
	}, 4, time.Second*2)
	timeWheel.SetTask(task2)

	value2 :=80
	task3:= NewTask("pjytest3", &value2, func(k interface{}) {
		num := k.(*int)
		*num++
		fmt.Println(*num)
	}, 20, time.Second*5)
	timeWheel.SetTask(task3)

	time.Sleep(time.Second * 7)
	timeWheel.DeleteTask("pjytest2")
	//timeWheel.StopTimeWheel()
	time.Sleep(time.Minute * 2)
}

About

golang实现单层时间轮

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages