Documentation ¶
Overview ¶
Package glist provides a concurrent-safe/unsafe doubly linked list.
Package grpool implements a goroutine reusable pool.
Package rwmutex provides switch of concurrent safe feature for sync.RWMutex.
Index ¶
- func Add(f func()) error
- func Jobs() int
- func Size() int
- type Bool
- type Element
- type Int
- type List
- func (l *List) Back() (e *Element)
- func (l *List) BackAll() (values []interface{})
- func (l *List) BackValue() (value interface{})
- func (l *List) Clear()
- func (l *List) Front() (e *Element)
- func (l *List) FrontAll() (values []interface{})
- func (l *List) FrontValue() (value interface{})
- func (l *List) InsertAfter(p *Element, v interface{}) (e *Element)
- func (l *List) InsertBefore(p *Element, v interface{}) (e *Element)
- func (l *List) Iterator(f func(e *Element) bool)
- func (l *List) IteratorAsc(f func(e *Element) bool)
- func (l *List) IteratorDesc(f func(e *Element) bool)
- func (l *List) Len() (length int)
- func (l *List) LockFunc(f func(list *list.List))
- func (l *List) MarshalJSON() ([]byte, error)
- func (l *List) MoveAfter(e, p *Element)
- func (l *List) MoveBefore(e, p *Element)
- func (l *List) MoveToBack(e *Element)
- func (l *List) MoveToFront(e *Element)
- func (l *List) PopBack() (value interface{})
- func (l *List) PopBackAll() []interface{}
- func (l *List) PopBacks(max int) (values []interface{})
- func (l *List) PopFront() (value interface{})
- func (l *List) PopFrontAll() []interface{}
- func (l *List) PopFronts(max int) (values []interface{})
- func (l *List) PushBack(v interface{}) (e *Element)
- func (l *List) PushBackList(other *List)
- func (l *List) PushBacks(values []interface{})
- func (l *List) PushFront(v interface{}) (e *Element)
- func (l *List) PushFrontList(other *List)
- func (l *List) PushFronts(values []interface{})
- func (l *List) RLockFunc(f func(list *list.List))
- func (l *List) Remove(e *Element) (value interface{})
- func (l *List) RemoveAll()
- func (l *List) Removes(es []*Element)
- func (l *List) Size() int
- func (l *List) UnmarshalJSON(b []byte) error
- type Pool
- type RWMutex
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Bool ¶
type Bool struct {
// contains filtered or unexported fields
}
func NewBool ¶
NewBool returns a concurrent-safe object for bool type, with given initial value <value>.
func (*Bool) Set ¶
Set atomically stores <value> into t.value and returns the previous value of t.value.
type Int ¶
type Int struct {
// contains filtered or unexported fields
}
func NewInt ¶
NewInt returns a concurrent-safe object for int type, with given initial value <value>.
func (*Int) Set ¶
Set atomically stores <value> into t.value and returns the previous value of t.value.
type List ¶
type List struct {
// contains filtered or unexported fields
}
func NewFrom ¶
NewFrom creates and returns a list from a copy of given slice <array>. The parameter <safe> used to specify whether using list in concurrent-safety, which is false in default.
func (*List) BackAll ¶
func (l *List) BackAll() (values []interface{})
BackAll copies and returns values of all elements from back of <l> as slice.
func (*List) BackValue ¶
func (l *List) BackValue() (value interface{})
BackValue returns value of the last element of <l> or nil if the list is empty.
func (*List) FrontAll ¶
func (l *List) FrontAll() (values []interface{})
FrontAll copies and returns values of all elements from front of <l> as slice.
func (*List) FrontValue ¶
func (l *List) FrontValue() (value interface{})
FrontValue returns value of the first element of <l> or nil if the list is empty.
func (*List) InsertAfter ¶
InsertAfter inserts a new element <e> with value <v> immediately after <p> and returns <e>. If <p> is not an element of <l>, the list is not modified. The <p> must not be nil.
func (*List) InsertBefore ¶
InsertBefore inserts a new element <e> with value <v> immediately before <p> and returns <e>. If <p> is not an element of <l>, the list is not modified. The <p> must not be nil.
func (*List) IteratorAsc ¶
IteratorAsc iterates the list in ascending order with given callback function <f>. If <f> returns true, then it continues iterating; or false to stop.
func (*List) IteratorDesc ¶
IteratorDesc iterates the list in descending order with given callback function <f>. If <f> returns true, then it continues iterating; or false to stop.
func (*List) LockFunc ¶
LockFunc locks writing with given callback function <f> within RWMutex.Lock.
func (*List) MarshalJSON ¶
MarshalJSON implements the interface MarshalJSON for json.Marshal.
func (*List) MoveAfter ¶
MoveAfter moves element <e> to its new position after <p>. If <e> or <p> is not an element of <l>, or <e> == <p>, the list is not modified. The element and <p> must not be nil.
func (*List) MoveBefore ¶
MoveBefore moves element <e> to its new position before <p>. If <e> or <p> is not an element of <l>, or <e> == <p>, the list is not modified. The element and <p> must not be nil.
func (*List) MoveToBack ¶
MoveToBack moves element <e> to the back of list <l>. If <e> is not an element of <l>, the list is not modified. The element must not be nil.
func (*List) MoveToFront ¶
MoveToFront moves element <e> to the front of list <l>. If <e> is not an element of <l>, the list is not modified. The element must not be nil.
func (*List) PopBack ¶
func (l *List) PopBack() (value interface{})
PopBack removes the element from back of <l> and returns the value of the element.
func (*List) PopBackAll ¶
func (l *List) PopBackAll() []interface{}
PopBackAll removes all elements from back of <l> and returns values of the removed elements as slice.
func (*List) PopBacks ¶
PopBacks removes <max> elements from back of <l> and returns values of the removed elements as slice.
func (*List) PopFront ¶
func (l *List) PopFront() (value interface{})
PopFront removes the element from front of <l> and returns the value of the element.
func (*List) PopFrontAll ¶
func (l *List) PopFrontAll() []interface{}
PopFrontAll removes all elements from front of <l> and returns values of the removed elements as slice.
func (*List) PopFronts ¶
PopFronts removes <max> elements from front of <l> and returns values of the removed elements as slice.
func (*List) PushBack ¶
PushBack inserts a new element <e> with value <v> at the back of list <l> and returns <e>.
func (*List) PushBackList ¶
PushBackList inserts a copy of an other list at the back of list <l>. The lists <l> and <other> may be the same, but they must not be nil.
func (*List) PushBacks ¶
func (l *List) PushBacks(values []interface{})
PushBacks inserts multiple new elements with values <values> at the back of list <l>.
func (*List) PushFront ¶
PushFront inserts a new element <e> with value <v> at the front of list <l> and returns <e>.
func (*List) PushFrontList ¶
PushFrontList inserts a copy of an other list at the front of list <l>. The lists <l> and <other> may be the same, but they must not be nil.
func (*List) PushFronts ¶
func (l *List) PushFronts(values []interface{})
PushFronts inserts multiple new elements with values <values> at the front of list <l>.
func (*List) RLockFunc ¶
RLockFunc locks reading with given callback function <f> within RWMutex.RLock.
func (*List) Remove ¶
Remove removes <e> from <l> if <e> is an element of list <l>. It returns the element value e.Value. The element must not be nil.
func (*List) Removes ¶
Removes removes multiple elements <es> from <l> if <es> are elements of list <l>.
func (*List) UnmarshalJSON ¶
UnmarshalJSON implements the interface UnmarshalJSON for json.Unmarshal.
type Pool ¶
type Pool struct {
// contains filtered or unexported fields
}
Goroutine Pool
func NewPool ¶
New creates and returns a new goroutine pool object. The parameter <limit> is used to limit the max goroutine count, which is not limited in default.
func (*Pool) Cap ¶
Cap returns the capacity of the pool. This capacity is defined when pool is created. If it returns -1 means no limit.
type RWMutex ¶
RWMutex is a sync.RWMutex with a switch of concurrent safe feature.
func NewRWMutex ¶
New creates and returns a new *RWMutex. The parameter <safe> is used to specify whether using this mutex in concurrent-safety, which is false in default.