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