Google.Cloud.Datastore.V1.DatastoreDb 是线程安全的吗?

Is Google.Cloud.Datastore.V1.DatastoreDb thread-safe?

我想知道在 c# 中是否应该在每次我想使用它时都创建 Google.Cloud.Datastore.V1.DatastoreDb 的新实例,或者我可以将一个全局实例作为单例保留?

这是在 linux 上的 c# .net core 3 和 Assembly Google.Cloud.Datastore.V1, Version=2.1.0.0

using Google.Cloud.Datastore.V1;

void DoStuff()
{
    var db = DatastoreDb.Create("my-project")
    db.Insert(entity);
}

对比

using Google.Cloud.Datastore.V1;

static db = DatastoreDb.Create("my-project")

void DoStuff()
{
     db.Insert(entity);
}

您可以使用 "com.google.cloud.datastore",这是一个使用 v1 库 的包装器。 "com.google.cloud.datastore" 根据此答案 .

是线程安全的

是的,DatastoreDb 不包含任何本地可变状态,并且是线程安全的。我们建议您使用它的单个实例,以避免打开不必要的网络连接。

DatastoreTransaction,但是,确实包含本地状态,并且不是线程安全的。 (它没有线程亲和性,但无法防止多个线程同时尝试添加突变,例如。)