完善延迟无锁队列的测试用例
This commit is contained in:
parent
94c82b2df0
commit
7ae884a559
@ -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() {
|
||||||
|
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