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 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 Consolidator ¶
type Consolidator struct {
// 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
func (*Consolidator) Create ¶
func (co *Consolidator) Create(query string) (r *Result, created bool)
Create adds a query to currently executing queries and acquires a lock on its Result if it is not already present. If the query is a duplicate, Create returns false.
func (*Consolidator) ServeHTTP ¶
func (co *Consolidator) ServeHTTP(response http.ResponseWriter, request *http.Request)
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.