timewheel

package
v0.0.0-...-3d82958 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2022 License: MIT, MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Timer timer

Functions

This section is empty.

Types

type Head struct {
	Next *Head
	Prev *Head
	// contains filtered or unexported fields
}

Head 双向节点指针域

func (*Head) Add

func (h *Head) Add(new *Head)

Add 向头部插入节点

func (*Head) AddTail

func (h *Head) AddTail(new *Head)

AddTail 向尾部插入节点

func (*Head) Del

func (h *Head) Del(head *Head)

Del 删除节点 API可以直接设计成func (h *Head) Del() 。为了管理链表的len,所以设计成如下形式

func (*Head) DelInit

func (h *Head) DelInit(pos *Head)

func (*Head) Empty

func (h *Head) Empty() bool

func (*Head) Entry

func (pos *Head) Entry(offset uintptr) unsafe.Pointer

Entry 获取当前元素

func (*Head) FirstEntry

func (h *Head) FirstEntry(offset uintptr) unsafe.Pointer

FirstEntry 表头调用FirstEntry可以获取第一个元素

func (*Head) FirstEntryOrNil

func (h *Head) FirstEntryOrNil(offset uintptr) unsafe.Pointer

FirstEntryOrNil 表头调用获取第一个元素,如果列表为空,返回nil

func (*Head) ForEach

func (h *Head) ForEach(callback func(pos *Head))

ForEach 向后遍历函数,如果遍历过程中有修改则不可以使用

func (*Head) ForEachPrev

func (h *Head) ForEachPrev(callback func(pos *Head))

ForEachPrev 向前遍历函数,如果遍历过程中有修改则不可以使用

func (*Head) ForEachPrevSafe

func (h *Head) ForEachPrevSafe(callback func(pos *Head))

ForEachPrevSafe 安全的向前遍历函数,如果遍历过程中有修改可以使用

func (*Head) ForEachSafe

func (h *Head) ForEachSafe(callback func(pos *Head))

ForEachSafe 安全的向后遍历函数,如果遍历过程中有修改可以使用

func (*Head) Init

func (h *Head) Init()

Init 初始化表头的函数,指向自己形成一个环

func (*Head) IsLast

func (h *Head) IsLast() bool

func (*Head) LastEntry

func (h *Head) LastEntry(offset uintptr) unsafe.Pointer

LastEntry 表头调LastEntry可以获取最后一元素

func (*Head) Len

func (h *Head) Len() int

Len 长度

func (*Head) Move

func (h *Head) Move(list *Head)

func (*Head) MoveTail

func (h *Head) MoveTail(list *Head)

func (*Head) NextEntry

func (pos *Head) NextEntry(offset uintptr) unsafe.Pointer

NextEntry 获取下一个元素

func (*Head) PrevEntry

func (pos *Head) PrevEntry(offset uintptr) unsafe.Pointer

PrevEntry 获取上一个元素

func (*Head) Replace

func (h *Head) Replace(new *Head)

func (*Head) ReplaceInit

func (h *Head) ReplaceInit(new *Head)

func (*Head) RotateLeft

func (h *Head) RotateLeft()

type Time

type Time struct {
	sync.Mutex
	// contains filtered or unexported fields
}

先使用sync.Mutex实现功能 后面使用cas优化

func (*Time) Stop

func (t *Time) Stop()

一个timeNode节点有4个状态 1.存在于初始化链表中 2.被移动到tmp链表 3.1 和 3.2是if else的状态

3.1被移动到new链表
3.2直接执行

1和3.1状态是没有问题的 2和3.2状态会是没有锁保护下的操作,会有数据竞争

type TimeNoder

type TimeNoder interface {
	Stop()
}

停止单个定时器

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL