协程池优化
parent
9a81b89885
commit
c3525558de
@ -0,0 +1,59 @@
|
||||
package routine
|
||||
|
||||
type options[T any] struct {
|
||||
workers int
|
||||
capacity int
|
||||
taskFn func(T)
|
||||
panicHandler func(any)
|
||||
}
|
||||
|
||||
// Option function
|
||||
type Option[T any] func(*options[T])
|
||||
|
||||
// setOptions 设置默认值
|
||||
func setOptions[T any](opt ...Option[T]) options[T] {
|
||||
opts := options[T]{
|
||||
workers: 1,
|
||||
capacity: 1,
|
||||
}
|
||||
|
||||
for _, o := range opt {
|
||||
o(&opts)
|
||||
}
|
||||
|
||||
return opts
|
||||
}
|
||||
|
||||
// WithWorkers 设置协程数
|
||||
func WithWorkers[T any](workers int) Option[T] {
|
||||
if workers <= 0 {
|
||||
workers = 1
|
||||
}
|
||||
return func(o *options[T]) {
|
||||
o.workers = workers
|
||||
}
|
||||
}
|
||||
|
||||
// WithCapacity 设置任务队列容量
|
||||
func WithCapacity[T any](capacity int) Option[T] {
|
||||
if capacity <= 0 {
|
||||
capacity = 1
|
||||
}
|
||||
return func(o *options[T]) {
|
||||
o.capacity = capacity
|
||||
}
|
||||
}
|
||||
|
||||
// WithTaskFn 设置任务函数
|
||||
func WithTaskFn[T any](taskFn func(T)) Option[T] {
|
||||
return func(o *options[T]) {
|
||||
o.taskFn = taskFn
|
||||
}
|
||||
}
|
||||
|
||||
// WithPanicHandler 设置panic处理函数
|
||||
func WithPanicHandler[T any](panicHandler func(any)) Option[T] {
|
||||
return func(o *options[T]) {
|
||||
o.panicHandler = panicHandler
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue