完善延迟无锁队列的测试用例
This commit is contained in:
parent
94c82b2df0
commit
7ae884a559
@ -6,6 +6,11 @@ type DelayLkQueue[T any] struct {
|
||||
LkQueue[T]
|
||||
}
|
||||
|
||||
// NewDelayLkQueue 创建延迟无锁队列
|
||||
func NewDelayLkQueue[T any]() *DelayLkQueue[T] {
|
||||
return &DelayLkQueue[T]{*NewLkQueue[T]()}
|
||||
}
|
||||
|
||||
// DelayEnqueue 延迟入队
|
||||
func (q *DelayLkQueue[T]) DelayEnqueue(value T, duration time.Duration) {
|
||||
time.AfterFunc(duration, func() {
|
||||
|
32
lock_free/delay_queue_test.go
Normal file
32
lock_free/delay_queue_test.go
Normal 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)
|
||||
}
|
Loading…
Reference in New Issue
Block a user