hashmap:一种Golang无锁,线程安全的HashMap,针对最快的读取访问进行了优化
哈希图
总览
Golang无锁无线程安全HashMap,针对最快的读取访问进行了优化。
用法
为地图中的键设置值:
m := &HashMap{}
m.Set("amount", 123)
从地图中读取键的值:
amount, ok := m.Get("amount")
使用地图来计数URL请求:
var i int64
actual, _ := m.GetOrInsert("api/123", &i)
counter := (actual).(*int64)
atomic.AddInt64(counter, 1) // increase counter
...
count := atomic.LoadInt64(counter) // read counter
基准测试
以线程安全的方式从哈希映射中进行读取的速度几乎与以不安全的方式从标准Golang映射中进行读取的速度相同,是Go的sync.Map的sync.Map 。
BenchmarkReadHashMapUint-8 200000 6830 ns/op
Benchmark