在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... */
}
因为我想模拟多用户场景。我试过这个代码,看起来效果很好。为什么说文件中我的数据库只有一个实例?
答案 0 :(得分:1)
你可以做你想做的事!它只是一个建议,在典型情况下,您只有一个实例并使用它来节省对Connect
等的额外调用。
我们试图阻止的主要事情是某人有这样的方法:
private static Element Get() {
var client = new GraphClient(...);
client.Connect();
var q = client.Cypher.DOQUERYHERE
return q.Results.Single();
}
凡每次他们调用Get
他们创建一个新实例,这样做的开销会使代码效率低下。
所以,长期和短期是 - 如果你希望拥有多个实例 - 当然你可以,你拥有的场景是一个很好的理由。