Documentation ¶
Overview ¶
Package syncutil Package buffer provides an implementation of an unbounded buffer.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Event ¶
type Event struct {
// contains filtered or unexported fields
}
Event represents a one-time event that may occur in the future.
func (*Event) Done ¶
func (e *Event) Done() <-chan struct{}
Done returns a channel that will be closed when Fire is called.
type OptimisticLock ¶ added in v0.3.29
type OptimisticLock struct {
// contains filtered or unexported fields
}
OptimisticLock allows an optimistic reading Could be retried or switched to RLock in case of failure
func NewOptimisticLock ¶ added in v0.3.29
func NewOptimisticLock() *OptimisticLock
NewOptimisticLock returns a new OptimisticLock
func (*OptimisticLock) Lock ¶ added in v0.3.29
func (o *OptimisticLock) Lock()
Lock locks resource for write
func (*OptimisticLock) OptLock ¶ added in v0.3.29
func (o *OptimisticLock) OptLock() int64
OptLock returns the stamp to be checked on OptUnlock
func (*OptimisticLock) OptUnlock ¶ added in v0.3.29
func (o *OptimisticLock) OptUnlock(stamp int64) bool
OptUnlock returns the boolean result of the optimistic unlock Retry or switch to read lock in case of negative outcome
func (*OptimisticLock) RLock ¶ added in v0.3.29
func (o *OptimisticLock) RLock()
RLock locks resource for read
func (*OptimisticLock) RUnlock ¶ added in v0.3.29
func (o *OptimisticLock) RUnlock()
RUnlock unlocks resource after read
func (*OptimisticLock) Unlock ¶ added in v0.3.29
func (o *OptimisticLock) Unlock()
Unlock unlocks resource after write
type ReentrantLock ¶ added in v0.3.29
type ReentrantLock struct {
// contains filtered or unexported fields
}
ReentrantLock allows goroutines to enter into lock on a resource more than once
func NewReentrantLock ¶ added in v0.3.29
func NewReentrantLock() *ReentrantLock
NewReentrantLock returns new ReentrantLock
func (*ReentrantLock) Lock ¶ added in v0.3.29
func (r *ReentrantLock) Lock()
Lock locks resource Panics on GoroutineID call error
func (*ReentrantLock) Unlock ¶ added in v0.3.29
func (r *ReentrantLock) Unlock()
Unlock unlocks resource Panics on trying to unlock the unlocked lock
type Unbounded ¶
type Unbounded struct {
// contains filtered or unexported fields
}
Unbounded is an implementation of an unbounded buffer which does not use extra goroutines. This is typically used for passing updates from one entity to another within gRPC.
All methods on this type are thread-safe and don't block on anything except the underlying mutex used for synchronization.
Unbounded supports values of any type to be stored in it by using a channel of `interface{}`. This means that a call to Put() incurs an extra memory allocation, and also that users need a type assertion while reading. For performance critical code paths, using Unbounded is strongly discouraged and defining a new type specific implementation of this buffer is preferred. See internal/transport/transport.go for an example of this.
func NewUnbounded ¶
func NewUnbounded() *Unbounded
NewUnbounded returns a new instance of Unbounded.
func (*Unbounded) Get ¶
func (b *Unbounded) Get() <-chan interface{}
Get returns a read channel on which values added to the buffer, via Put(), are sent on.
Upon reading a value from this channel, users are expected to call Load() to send the next buffered value onto the channel if there is any.
type WaitGroup ¶
func NewWaitGroup ¶
func (*WaitGroup) EnableCheck ¶
func (t *WaitGroup) EnableCheck()