You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

18 lines
540 B

package async
import "time"
type ScheduleQueue[T any] struct {
delayer *DelayQueue[T]
}
func NewScheduleQueue[T any](checkInterval time.Duration, buffer int, handler func(data T, now time.Time) T) *ScheduleQueue[T] {
delayer := NewDelayQueue[T](checkInterval, buffer, nil)
delayer.handler = handler
return &ScheduleQueue[T]{delayer: delayer}
}
// Schedule scheduleWithFixedDelay 定时执行任务
func (q *ScheduleQueue[T]) Schedule(after time.Duration, data T) *Canceler[T] {
return q.delayer.schedule0(true, after, data, nil)
}