Является ли Google.Cloud.Datastore.V1.DatastoreDb поточно-ориентированным? - PullRequest
1 голос
/ 12 октября 2019

Мне интересно, должен ли в c # создавать новый экземпляр Google.Cloud.Datastore.V1.DatastoreDb каждый раз, когда я хочу его использовать, или я могу сохранить один глобальный экземпляр в качестве одиночного?

Это в ядре c # .net3 на Linux с 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);
}

Ответы [ 2 ]

2 голосов
/ 22 октября 2019

Да, DatastoreDb не содержит локального изменяемого состояния и является потокобезопасным. Мы рекомендуем использовать один его экземпляр, чтобы избежать потенциального открытия большего количества сетевых подключений, чем необходимо.

DatastoreTransaction, однако содержит локальное состояние, а - нет потокобезопасен. (У него нет привязки к потокам, но нет защиты, например, от нескольких потоков, пытающихся одновременно добавлять мутации.)

0 голосов
/ 14 октября 2019

Вы можете использовать "com.google.cloud.datastore", который является оберткой, которая использует библиотеку v1 ссылка . "com.google.cloud.datastore" является потокобезопасным согласно этому ответу ссылка .

...