Azure CloudTable是否是线程安全的?

ale*_*xey 24 .net azure azure-storage azure-table-storage

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

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

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

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

Yos*_*han 13

CloudStorageAccount

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

CloudTableClient

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


小智 7

  1. 不幸的是,它们不是线程安全的
  2. 幸运的是,它根本不重要:通信基于HTTP,这意味着没有连接被重用,每次应用程序只创建一个新的HTTP连接.所以只需重新创建每个线程的一切.我甚至在一个线程中测试过,为每个查询重新创建所有内容只需要花费更多.

  • 请注意,如果过多使用客户端而没有给GC清理连接的机会,则会用尽套接字。 (3认同)