diff --git a/pkg/util/worker_pool.go b/pkg/util/worker_pool.go new file mode 100644 index 000000000..3083cf069 --- /dev/null +++ b/pkg/util/worker_pool.go @@ -0,0 +1,24 @@ +package util + +// WorkerPool represents the tool for control +// the execution of go-routine pool. +type WorkerPool interface { + // Submit queues a function for execution + // in a separate routine. + // + // Implementation must return any error encountered + // that prevented the function from being queued. + Submit(func()) error +} + +// SyncWorkerPool represents synchronous worker pool. +type SyncWorkerPool struct{} + +// Submit executes passed function immediately. +// +// Always returns nil. +func (SyncWorkerPool) Submit(fn func()) error { + fn() + + return nil +}