2015-11-04 85 views
1

https://github.com/Readify/Neo4jClient/wiki/connecting#threading-and-lifestyles中,它提到了对于每个数据库,您应该只有一个它的实例。如果我想使用多线程,我可以创建多个实例吗?例如,我想要做以下事情:关于线程安全

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... */ 
} 

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

回答

1

你可以做你想做的!这只是一个建议,在典型情况下,你将有只有一个实例,并使用它来调用额外节省Connect

我们试图避免的主要问题是如果有人有这样的方法:

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

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

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

所以,多空是 - 如果你有多个实例 - 当然你可以,你有这个场景是一个很好的理由。

+0

我明白了,谢谢! – IamVeryClever