スレッドセーフマップ

Goではマップはスレッドセーフではありません、それをご存知でない場合は、この記事は役立つかもしれません: atomic_maps。しかし、特にゴルーチンを使用している場合は、実際にはスレッドセーフマップのようなものを必要としています。それゆえ、beegoはシンプルなビルドインのスレッドセーフマップの実装を提供しています。

  1. bm := NewBeeMap()
  2. if !bm.Set("astaxie", 1) {
  3. t.Error("set Error")
  4. }
  5. if !bm.Check("astaxie") {
  6. t.Error("check err")
  7. }
  8. if v := bm.Get("astaxie"); v.(int) != 1 {
  9. t.Error("get err")
  10. }
  11. bm.Delete("astaxie")
  12. if bm.Check("astaxie") {
  13. t.Error("delete err")
  14. }

このマップは、次のインターフェイスがあります:

  • Get(k interface{}) interface{}
  • Set(k interface{}, v interface{}) bool
  • Check(k interface{}) bool
  • Delete(k interface{})