Documentation ¶
Overview ¶
Package sync2 provides extra functionality along the same lines as sync.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AtomicBool ¶
type AtomicBool struct {
// contains filtered or unexported fields
}
AtomicBool gives an atomic boolean variable.
func NewAtomicBool ¶
func NewAtomicBool(n bool) AtomicBool
NewAtomicBool initializes a new AtomicBool with a given value.
type AtomicDuration ¶
type AtomicDuration struct {
// contains filtered or unexported fields
}
AtomicDuration is a wrapper with a simpler interface around atomic.(Add|Store|Load|CompareAndSwap)Int64 functions.
func NewAtomicDuration ¶
func NewAtomicDuration(duration time.Duration) AtomicDuration
NewAtomicDuration initializes a new AtomicDuration with a given value.
func (*AtomicDuration) Add ¶
func (d *AtomicDuration) Add(duration time.Duration) time.Duration
Add atomically adds duration to the value.
func (*AtomicDuration) CompareAndSwap ¶
func (d *AtomicDuration) CompareAndSwap(oldval, newval time.Duration) (swapped bool)
CompareAndSwap atomatically swaps the old with the new value.
func (*AtomicDuration) Get ¶
func (d *AtomicDuration) Get() time.Duration
Get atomically returns the current value.
func (*AtomicDuration) Set ¶
func (d *AtomicDuration) Set(duration time.Duration)
Set atomically sets duration as new value.
type AtomicInt32 ¶
type AtomicInt32 struct {
// contains filtered or unexported fields
}
AtomicInt32 is a wrapper with a simpler interface around atomic.(Add|Store|Load|CompareAndSwap)Int32 functions.
func NewAtomicInt32 ¶
func NewAtomicInt32(n int32) AtomicInt32
NewAtomicInt32 initializes a new AtomicInt32 with a given value.
func (*AtomicInt32) Add ¶
func (i *AtomicInt32) Add(n int32) int32
Add atomically adds n to the value.
func (*AtomicInt32) CompareAndSwap ¶
func (i *AtomicInt32) CompareAndSwap(oldval, newval int32) (swapped bool)
CompareAndSwap atomatically swaps the old with the new value.
func (*AtomicInt32) Get ¶
func (i *AtomicInt32) Get() int32
Get atomically returns the current value.
type AtomicInt64 ¶
type AtomicInt64 struct {
// contains filtered or unexported fields
}
AtomicInt64 is a wrapper with a simpler interface around atomic.(Add|Store|Load|CompareAndSwap)Int64 functions.
func NewAtomicInt64 ¶
func NewAtomicInt64(n int64) AtomicInt64
NewAtomicInt64 initializes a new AtomicInt64 with a given value.
func (*AtomicInt64) Add ¶
func (i *AtomicInt64) Add(n int64) int64
Add atomically adds n to the value.
func (*AtomicInt64) CompareAndSwap ¶
func (i *AtomicInt64) CompareAndSwap(oldval, newval int64) (swapped bool)
CompareAndSwap atomatically swaps the old with the new value.
func (*AtomicInt64) Get ¶
func (i *AtomicInt64) Get() int64
Get atomically returns the current value.
type AtomicString ¶
type AtomicString struct {
// contains filtered or unexported fields
}
AtomicString gives you atomic-style APIs for string, but it's only a convenience wrapper that uses a mutex. So, it's not as efficient as the rest of the atomic types.
func (*AtomicString) CompareAndSwap ¶
func (s *AtomicString) CompareAndSwap(oldval, newval string) (swqpped bool)
CompareAndSwap atomatically swaps the old with the new value.
func (*AtomicString) Get ¶
func (s *AtomicString) Get() string
Get atomically returns the current value.
func (*AtomicString) Set ¶
func (s *AtomicString) Set(str string)
Set atomically sets str as new value.
type Batcher ¶
type Batcher struct {
// contains filtered or unexported fields
}
Batcher delays concurrent operations for a configurable interval in order to batch them up or otherwise clock their operation to run concurrently.
It is implemented as a channel of int32s. Each waiter blocks on the channel from which it gets a sequentially increasing batch ID when the timer elapses.
Hence a waiter is delayed for at most the batch interval.
type Consolidator ¶
type Consolidator struct { *ConsolidatorCache // contains filtered or unexported fields }
Consolidator consolidates duplicate queries from executing simulaneously and shares results between them.
func NewConsolidator ¶
func NewConsolidator() *Consolidator
NewConsolidator creates a new Consolidator
type ConsolidatorCache ¶
ConsolidatorCache is a thread-safe object used for counting how often recent queries have been consolidated. It is also used by the txserializer package to count how often transactions have been queued and had to wait because they targeted the same row (range).
func NewConsolidatorCache ¶
func NewConsolidatorCache(capacity int64) *ConsolidatorCache
NewConsolidatorCache creates a new cache with the given capacity.
func (*ConsolidatorCache) Items ¶
func (cc *ConsolidatorCache) Items() []ConsolidatorCacheItem
Items returns the items in the cache as an array of String, int64 structs
func (*ConsolidatorCache) Record ¶
func (cc *ConsolidatorCache) Record(query string)
Record increments the count for "query" by 1. If it's not in the cache yet, it will be added.
type ConsolidatorCacheItem ¶
ConsolidatorCacheItem is a wrapper for the items in the consolidator cache
type Result ¶
type Result struct { Result interface{} Err error // contains filtered or unexported fields }
Result is a wrapper for result of a query.
type Semaphore ¶
type Semaphore struct {
// contains filtered or unexported fields
}
Semaphore is a counting semaphore with the option to specify a timeout.
func NewSemaphore ¶
NewSemaphore creates a Semaphore. The count parameter must be a positive number. A timeout of zero means that there is no timeout.
func (*Semaphore) Release ¶
func (sem *Semaphore) Release()
Release releases the acquired semaphore. You must not release more than the number of semaphores you've acquired.
func (*Semaphore) TryAcquire ¶
TryAcquire acquires a semaphore if it's immediately available. It returns false otherwise.