Я занимаюсь разработкой приложения Azure, которому необходимо в какой-то момент загрузить (загрузить) большое количество небольших больших двоичных объектов в один контейнер (более 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 в разных потоках, в противном случае это серьезно замедляет загрузку (загрузка) процесс.