Типы BLOB-объектов хранилища Azure (CloudBlobContainer, CloudBlobClient и т. Д.) И безопасность потоков

Я разрабатываю лазурное приложение, которому в какой-то момент необходимо загрузить (загрузить) большое количество небольших двоичных объектов в один контейнер (более 1 КБ, менее 1 МБ каждый). Чтобы ускорить этот процесс, я хотел бы использовать несколько потоков для загрузки (скачивания) больших двоичных объектов.

Это процедура, которую я использую для загрузки одного большого двоичного объекта:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = 
    blobClient.GetContainerReference(ContainerName);
blobContainer.CreateIfNotExist();

CloudBlob blob = blobContainer.GetBlobReference(Id);
blob.UploadByteArray(Data);

Для каждого типа, использованного в приведенном выше коде, MSDN сообщает следующее:

Любые общедоступные статические (общие в Visual Basic) члены этого типа являются потокобезопасный. Любые члены экземпляра не обязательно являются потоками безопасно.

Означает ли это, что мне нужно выполнять следующий код в каждом потоке? Или, может быть, я могу выполнить его только один раз и поделиться одним экземпляром CloudBlobContainer между разными потоками?

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = 
    blobClient.GetContainerReference(ContainerName);

Я был бы очень рад использовать один экземпляр CloudBlobContainer в разных потоках, иначе это серьезно замедлит весь процесс загрузки (скачивания).

7
задан monofilm 2 August 2011 в 16:35
поделиться