帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:concurrent  thread-safe  thread  saf  
a thread-safe concurrent map for go

  • 源代码名称:concurrent-map
  • 源代码网址:http://www.github.com/orcaman/concurrent-map
  • concurrent-map源代码文档
  • concurrent-map源代码下载
  • Git URL:
    git://www.github.com/orcaman/concurrent-map.git
  • Git Clone代码到本地:
    git clone http://www.github.com/orcaman/concurrent-map
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/orcaman/concurrent-map
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • 并发映射 Circle CI

    这里解释了和这里的,go的map 类型不支持并发读和写。 concurrent-map 为这个提供了一个高性能解决方案,通过分割等待锁定的最小时间。

    go之前,在stdlib中没有并发映射实现。 在 go 1.9中,sync.Map 被引入。 新 sync.Map 与这里地图有几个关键区别。 stdlib的sync.Map 是为附加场景而设计的。 因这里如果你想使用地图更像内存数据库中的一样,你可能会利用我们的版本。 你可以在 golang repo 中阅读更多的内容,例如:[here] ( golang/go#21035 ) 和

    用法

    导入软件包:

    import (
     "github.com/orcaman/concurrent-map")
    go get "github.com/orcaman/concurrent-map"

    包现在在"cmap"命名空间下导入。

    示例

    // Create a new map.map:= cmap.New()
     // Sets item within map, sets"bar" under key"foo"map.Set("foo", "bar")
     // Retrieve item from map.iftmp, ok:=map.Get("foo"); ok {
     bar:= tmp.(string)
     }
     // Removes item under key"foo"map.Remove("foo")

    有关更多示例,请参见 concurrent_map_test.go.

    运行测试:

    go test"github.com/orcaman/concurrent-map"

    contribute指南

    欢迎使用捐赠为了合并一个捐赠,请按照以下准则进行操作:

    • 打开一个问题并描述你在( 修复 Bug,添加增强功能,等等 ) 之后的情况。
    • 根据上述问题的核心反馈,提交一个拉请求,描述更改并链接到该问题。
    • 新代码必须具有测试覆盖。
    • 如果代码涉及性能问题,则必须在进程( 在问题中或者在公关中) 中包含基准代码。
    • 通常,我们希望尽可以能简单地保持 concurrent-map,并且类似于本机 map。 在打开问题时请记住这一点。

    许可证

    MIT ( 请参阅许可协议文件)



    文章标签:saf  thread  concurrent  thread-safe  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语