Безопасность потоков BLOB-объектов Azure и очереди

Мне нужна помощь в понимании безопасности потоков в классах azure CloudBlobClient, CloudQueueClient и CloudBlob.

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

Я хочу убедиться, что эти рабочие не наступают друг другу на пятки.

1> Как я могу убедиться в этом, не используя никаких замков? Если я назначу отдельные CloudBlobClient и CloudQueueClient каждому из моих рабочих процессоров (которые все живут в рамках одного процесса), достаточно ли сказать, что они независимы друг от друга, и поскольку все рабочие процессоры используют отдельный экземпляр клиента, они не будут работать друг в друга?

2> Если я попытаюсь реализовать параллелизм в CloudBlobClient с помощью Parallel.ForEach для параллельного вызова GetBlobReference или UploadText в рамках одного процессора заданий, мне нужно будет включить какую-то синхронизацию или эти методы потокобезопасный? В документации Azure говорится, что это не так, но в большинстве примеров, которые я видел в Интернете, похоже, не применяется какой-либо механизм синхронизации для этих методов. Как лучше всего этого добиться? Я имею в виду лучший способ использовать один CloudBlobClient и вызывать GetBlobReference или UploadText в параллельном режиме?

7
задан iCode 16 May 2011 в 22:45
поделиться