Golang实现的时间轮

来源:互联网 发布:sql数据库文件怎么打开 编辑:程序博客网 时间:2024/06/05 20:46

timewheel

Golang实现的时间轮 项目地址

时间轮

原理

延迟消息的实现

安装

go get -u github.com/ouqiang/timewheel

使用

package mainimport (    "github.com/ouqiang/timewheel"    "time")func main()  {    // 初始化时间轮    // 第一个参数为tick刻度, 即时间轮多久转动一次    // 第二个参数为时间轮槽slot数量    // 第三个参数为回调函数    tw := timewheel.New(1 * time.Second, 3600, func(data timewheel.TaskData) {        // do something    })    // 启动时间轮    tw.Start()    // 添加定时器     // 第一个参数为延迟时间    // 第二个参数为定时器唯一标识, 删除定时器需传递此参数    // 第三个参数为用户自定义数据, 此参数将会传递给回调函数, 类型为map[interface{}] interface{}    tw.AddTimer(5 * time.Second, conn, timewheel.TaskData{"uid" : 105626})    // 删除定时器, 参数为添加定时器传递的唯一标识    tw.RemoveTimer(conn)    // 停止时间轮    tw.Stop()    select{}}
原创粉丝点击