完善延迟无锁队列的测试用例

This commit is contained in:
fantasticbin 2024-12-03 10:25:34 +08:00
parent 94c82b2df0
commit 7ae884a559
2 changed files with 37 additions and 0 deletions

View File

@ -6,6 +6,11 @@ type DelayLkQueue[T any] struct {
LkQueue[T] LkQueue[T]
} }
// NewDelayLkQueue 创建延迟无锁队列
func NewDelayLkQueue[T any]() *DelayLkQueue[T] {
return &DelayLkQueue[T]{*NewLkQueue[T]()}
}
// DelayEnqueue 延迟入队 // DelayEnqueue 延迟入队
func (q *DelayLkQueue[T]) DelayEnqueue(value T, duration time.Duration) { func (q *DelayLkQueue[T]) DelayEnqueue(value T, duration time.Duration) {
time.AfterFunc(duration, func() { time.AfterFunc(duration, func() {

View File

@ -0,0 +1,32 @@
package lock_free
import (
"testing"
"time"
)
func TestDelayLkQueue(t *testing.T) {
cases := []struct {
value int
duration time.Duration
}{
{1, time.Second},
{3, time.Second * 3},
}
q := NewDelayLkQueue[int]()
for _, c := range cases {
q.DelayEnqueue(c.value, c.duration)
}
notidy := make(chan int)
go func() {
for data := range notidy {
t.Log(data)
t.Log(time.Now().Unix())
}
}()
go q.ContinuousDequeue(notidy)
time.Sleep(time.Second * 5)
}