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 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.