Documentation
¶
Overview ¶
Package syncX 提供并发安全的数据结构,是对标准库 sync 的扩展。
Package syncX 提供并发安全的数据结构,是对标准库 sync 的扩展。
Package syncX 提供并发安全的数据结构,是对标准库 sync 的扩展。
Index ¶
- type LimitPool
- type Map
- func (m *Map[K, V]) Delete(key K)
- func (m *Map[K, V]) IsEmpty() bool
- func (m *Map[K, V]) Load(key K) (value V, ok bool)
- func (m *Map[K, V]) LoadAndDelete(key K) (value V, loaded bool)
- func (m *Map[K, V]) LoadOrStore(key K, value V) (actual V, loaded bool)
- func (m *Map[K, V]) LoadOrStoreFunc(key K, fn func() (V, error)) (actual V, loaded bool, err error)
- func (m *Map[K, V]) Range(f func(key K, value V) bool)
- func (m *Map[K, V]) Store(key K, value V)
- type Pool
- type RWMutexMap
- func (m *RWMutexMap[K, V]) CapMax() int
- func (m *RWMutexMap[K, V]) Clear()
- func (m *RWMutexMap[K, V]) Delete(key K)
- func (m *RWMutexMap[K, V]) Get(key K) (V, bool)
- func (m *RWMutexMap[K, V]) Has(key K) bool
- func (m *RWMutexMap[K, V]) IsFull() bool
- func (m *RWMutexMap[K, V]) Keys() []K
- func (m *RWMutexMap[K, V]) Len() int
- func (m *RWMutexMap[K, V]) Range(f func(key K, value V) bool)
- func (m *RWMutexMap[K, V]) Set(key K, value V) bool
- func (m *RWMutexMap[K, V]) SetMaxCapacity(maxCap int)
- func (m *RWMutexMap[K, V]) String() string
- func (m *RWMutexMap[K, V]) Values() []V
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type LimitPool ¶
type LimitPool[T any] struct { // contains filtered or unexported fields }
LimitPool 是对 Pool 的简单封装允许用户通过控制一段时间内对Pool的令牌申请次数来间接控制Pool中对象的内存总占用量
func NewLimitPool ¶
NewLimitPool 创建一个 LimitPool 实例 maxTokens 表示一段时间内的允许发放的最大令牌数 factory 必须返回 T 类型的值,并且不能返回 nil
type Map ¶
type Map[K comparable, V any] struct { // contains filtered or unexported fields }
Map 是对 sync.Map 的一个泛型封装 要注意,K 必须是 comparable 的,并且谨慎使用指针作为 K。 使用指针的情况下,两个 key 是否相等,仅仅取决于它们的地址 而不是地址指向的值。可以参考 Load 测试。 注意,key 不存在和 key 存在但是值恰好为零值(如 nil),是两码事
func (*Map[K, V]) LoadAndDelete ¶
LoadAndDelete 加载并且删除一个键值对
func (*Map[K, V]) LoadOrStore ¶
LoadOrStore 加载或者存储一个键值对 true 代表是加载的,false 代表执行了 store
func (*Map[K, V]) LoadOrStoreFunc ¶
LoadOrStoreFunc 是一个优化,也就是使用该方法能够避免无意义的创建实例。 如果你的初始化过程非常消耗资源,那么使用这个方法是有价值的。 它的代价就是 Key 不存在的时候会多一次 Load 调用。 当 fn 返回 error 的时候,LoadOrStoreFunc 也会返回 error。
type Pool ¶
type Pool[T any] struct { // contains filtered or unexported fields }
Pool 是对 sync.Pool 的简单封装 会有一些性能损耗,但是基本可以忽略不计。担忧性能问题的可以参考
Example ¶
// Create a pool for byte slices
pool := NewPool(func() []byte {
return make([]byte, 1024)
})
// Get a byte slice from the pool
buf := pool.Get()
// Use the buffer
buf[0] = 1
// Return it to the pool when done
pool.Put(buf)
type RWMutexMap ¶
type RWMutexMap[K comparable, V any] struct { // contains filtered or unexported fields }
RWMutexMap 带读写锁的并发安全泛型Map,且支持限制最大容量控制【仅用于写场景>=30%,读场景>=90%建议还是使用sync.map】
func NewRWMutexMap ¶
func NewRWMutexMap[K comparable, V any](capacity, maxCapacity int) *RWMutexMap[K, V]
NewRWMutexMap 创建一个新的并发安全Map
- capacity: 初始容量,如果为0则使用默认容量
- maxCapacity: 最大容量限制,如果为0则表示无限制
func (*RWMutexMap[K, V]) IsFull ¶
func (m *RWMutexMap[K, V]) IsFull() bool
IsFull 检查是否已满(仅在设置了最大容量时有效)
func (*RWMutexMap[K, V]) Range ¶
func (m *RWMutexMap[K, V]) Range(f func(key K, value V) bool)
Range 遍历map,如果函数返回false则停止遍历 注意:
- 用户函数在读锁保护下执行,确保数据读取一致性
- 警告:用户函数不应修改map,否则可能导致竞态条件
- 如果需要修改map,请使用Set/Delete方法
func (*RWMutexMap[K, V]) Set ¶
func (m *RWMutexMap[K, V]) Set(key K, value V) bool
Set 设置键值对,如果容量已满则返回false,key存在则更新值,key不存在则添加
func (*RWMutexMap[K, V]) SetMaxCapacity ¶
func (m *RWMutexMap[K, V]) SetMaxCapacity(maxCap int)
SetMaxCapacity 设置最大容量限制