我需要一些帮助来了解Azure CloudBlobClient,CloudQueueClient和CloudBlob类中的线程安全性。Azure Blob和队列线程安全
我正在开发一个包含多个独立作业处理器的工作者角色,其中每个作业处理器都从特定的队列中读取数据,并向某些可能相同的blob容器进行写入/更新。
我想确保这些作业处理器不会踩在彼此的脚趾上。
1>如何确保没有使用任何类型的锁就是这种情况?如果我将一个单独的CloudBlobClient和CloudQueueClient分配给每个作业处理器(都位于同一进程中),是否足以说它们彼此独立,并且因为每个作业处理器都使用单独的客户端实例,所以它们将不会运行相互依赖?如果我尝试在使用Parallel.ForEach的CloudBlobClient上并行执行并行调用GetBlobReference或UploadText,是否需要合并某种同步或者这些方法是否线程安全? Azure文档说,他们不是但我在网上看到的大多数例子似乎都没有对这些方法应用任何类型的同步机制。达到此目的的最佳方法是什么?我的意思是使用一个CloudBlobClient并行调用GetBlobReference或UploadText的最佳方式?
但我有点同意奥利弗,因为这是更多的锅炉评论。我找不到任何报告的问题,除非您使用的ParallelOperationThreadCount高于1。如果我不需要,我宁愿不锁定代码。 – iCode 2011-05-17 02:22:38
您几乎在框架中的每个类都会看到关于线程安全性的评论。库使用ParallelOperationThreadCount在内部创建线程,所以这不应该影响你在做什么。客户端类创建相当轻量级。 – knightpfhor 2011-05-17 03:16:51