24

我正在使用来自不同线程(ASP.NET 应用程序)的 Storage SDK 2.0 写入 Azure 表存储。

CloudTable对象是线程安全的吗?我可以只初始化一次 CloudStorageAccount、CloudTableClient 和 CloudTable(例如,在静态构造函数中),然后在不同的线程中使用它们吗?

还是每次从空白处创建所有 CloudStorageAccount、CloudTableClient 和 CloudTable 对象更好(如本文所示)?它会以任何方式影响性能吗?

每次对表执行操作时获取 CloudTable 实例的首选方法是什么?

4

2 回答 2

13

云存储账户

此类型的任何公共静态(在 Visual Basic 中为 Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。

云表客户端

此类型的任何公共静态(在 Visual Basic 中为 Shared)成员都是线程安全的。不保证任何实例成员都是线程安全的。

于 2012-11-06T09:40:56.537 回答
7
  1. 不幸的是,它们不是线程安全的
  2. 幸运的是,这并不重要:通信是基于 HTTP 的,这意味着没有重用连接,并且每次应用程序只是创建一个新的 HTTP 连接。所以只需重新创建每个线程的所有内容。而且我什至在一个线程中进行了测试,为每个查询重新创建所有内容只需要花费更多。
于 2013-02-04T03:31:29.680 回答