我需要一些帮助来理解 azure CloudBlobClient、CloudQueueClient 和 CloudBlob 类中的线程安全。
我正在开发一个工作角色,其中包括多个独立的作业处理器,其中每个作业处理器从特定队列读取并写入/更新到一些可能相同的 blob 容器。
我想确保这些工作处理者不会互相踩踏。
1> 在不使用任何类型的锁的情况下,如何确保这种情况?如果我将单独的 CloudBlobClient 和 CloudQueueClient 分配给我的每个作业处理器(它们都生活在同一个进程中),是否足以说它们彼此独立并且因为每个作业处理器都使用单独的客户端实例,所以它们不会运行互相喜欢吗?
2> 在同一个作业处理器中,如果我尝试在 CloudBlobClient 上使用 Parallel.ForEach 并行调用 GetBlobReference 或 UploadText,我是否需要合并某种同步或这些方法是线程安全的?Azure 文档说它们不是,但我在网上看到的大多数示例似乎都没有在这些方法上应用任何类型的同步机制。实现这一目标的最佳方法是什么?我的意思是使用一个 CloudBlobClient 并并行调用 GetBlobReference 或 UploadText 的最佳方式?