关于线程安全

About thread safe

https://github.com/Readify/Neo4jClient/wiki/connecting#threading-and-lifestyles中提到每个数据库只能有一个实例。如果我想使用multi,我可以创建多个实例吗-线程?例如,我想做以下事情:

main() {
    for ( int i = 0 ; i < 10 ; ++i )
        ( new System.Threading.Thread( newUser() ) ).Start() ;
}
void newUser() {
    var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
    client.Connect();
    /* do sth... */
}

因为我想模拟多用户场景。我试过这段代码,看起来效果不错。为什么说我的数据库在文档中只能有一个实例?

你可以为所欲为!这只是一个建议,在典型情况下,您将只有一个实例并使用它来节省对 Connect 等的额外调用。

我们要防止的主要事情是有人使用这样的方法:

private static Element Get() {
    var client = new GraphClient(...);
    client.Connect();

    var q = client.Cypher.DOQUERYHERE
    return q.Results.Single();
}

他们每次 调用 Get 他们创建一个新实例,这样做的开销会使代码效率非常低。

所以,总而言之 - 如果您想要拥有多个实例 - 当然可以,您拥有的场景是一个很好的理由。