Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RunWithMutex ¶
Types ¶
type Mutex ¶
type Mutex struct {
// contains filtered or unexported fields
}
Mutex is a non-reentrant (like sync.Mutex) mutex that (unlike sync.Mutex) allows to acquire the mutex with a possibility to abort the attempt early if a context signals done.
A buffered channel of size 1 is used as the mutex. Think of it as of a box - the party that has put something into it has acquired the mutex. To unlock it, remove the contents from the box, so that someone else can use it. An empty box is created in the NewMutex() constructor.
TryLock, Lock, and Unlock provide memory access ordering guarantees by piggybacking on channel's "happens before" guarantees. See https://golang.org/ref/mem
type RWMutex ¶
type RWMutex struct {
// contains filtered or unexported fields
}
func NewRWMutex ¶
func NewRWMutex() RWMutex
type WorkerFunc ¶ added in v16.1.3
func (WorkerFunc) Run ¶ added in v16.1.3
func (wf WorkerFunc) Run(ctx context.Context)
type WorkerHolder ¶ added in v16.1.3
type WorkerHolder[C any] struct { // contains filtered or unexported fields }
WorkerHolder holds a worker and restarts it when configuration changes.
func NewComparableWorkerHolder ¶ added in v16.1.3
func NewComparableWorkerHolder[C comparable](factory func(C) Worker) *WorkerHolder[C]
func NewProtoWorkerHolder ¶ added in v16.1.3
func NewProtoWorkerHolder[C proto.Message](factory func(C) Worker) *WorkerHolder[C]
func NewWorkerHolder ¶ added in v16.1.3
func NewWorkerHolder[C any](factory func(C) Worker, isEqual func(config1, config2 C) bool) *WorkerHolder[C]
func (*WorkerHolder[C]) ApplyConfig ¶ added in v16.1.3
func (w *WorkerHolder[C]) ApplyConfig(ctx context.Context, config C) bool
ApplyConfig ensures a worker is running with the provided or equal config.
This method starts a worker if it's not running already. If it is running and the config is not equal then the worker is stopped, a new worker is started then with the new config.
func (*WorkerHolder[C]) StopAndWait ¶ added in v16.1.3
func (w *WorkerHolder[C]) StopAndWait()