C# Google.Cloud.Datastore.V1.DatastoreDb是否线程安全?
我想知道,在c#中,我是否应该在每次使用时创建C# Google.Cloud.Datastore.V1.DatastoreDb是否线程安全?,c#,google-cloud-platform,google-cloud-datastore,C#,Google Cloud Platform,Google Cloud Datastore,我想知道,在c#中,我是否应该在每次使用时创建Google.Cloud.Datastore.V1.DatastoreDb的新实例,或者我可以保留一个全局实例作为一个单实例 这是在linux上的c#.net core 3中,带有程序集Google.Cloud.Datastore.V1,版本=2.1.0.0 使用Google.Cloud.Datastore.V1; void DoStuff() { var db=DatastoreDb.Create(“我的项目”) db.插入(实体); } vs
Google.Cloud.Datastore.V1.DatastoreDb
的新实例,或者我可以保留一个全局实例作为一个单实例
这是在linux上的c#.net core 3中,带有程序集Google.Cloud.Datastore.V1,版本=2.1.0.0
使用Google.Cloud.Datastore.V1;
void DoStuff()
{
var db=DatastoreDb.Create(“我的项目”)
db.插入(实体);
}
vs
使用Google.Cloud.Datastore.V1;
静态数据库=DatastoreDb.Create(“我的项目”)
void DoStuff()
{
db.插入(实体);
}
您可以使用“com.google.cloud.datastore”,这是一个使用v1库的包装器。
根据这个答案,“com.google.cloud.datastore”是线程安全的。是的,
DatastoreDb
不包含任何本地可变状态,是线程安全的。我们建议您使用它的一个实例,以避免可能打开的网络连接超过所需数量
然而,DataStoreTransation确实包含本地状态,并且不是线程安全的。(例如,它没有线程亲缘关系,但无法防止多个线程试图同时添加突变。)它是否明确记录在某个线程安全的地方?如果不是,那么你应该假设它不是。但是你也可以走中间路线——拥有一个实例池,这些实例在线程需要时分发给线程,然后重新使用。谢谢,但是链接是针对java的,不确定它是否与c相关#