24

さまざまなスレッド (ASP.NET アプリケーション) から Storage SDK 2.0 を使用して、Azure テーブル ストレージに書き込みを行っています。

CloudTableオブジェクトはスレッドセーフですか? CloudStorageAccount、CloudTableClient、および CloudTable を 1 回だけ (たとえば、静的コンストラクターで) 初期化し、それらを別のスレッドで使用できますか?

それとも、CloudStorageAccount、CloudTableClient、および CloudTable のすべてのオブジェクトを毎回空白から作成する方がよいでしょうか (この記事に示されているように)。何らかの形でパフォーマンスに影響しますか?

テーブルに対して操作を実行するたびに CloudTable のインスタンスを取得する好ましい方法は何ですか?

4

2 に答える 2

13

クラウドストレージアカウント

この型の public static (Visual Basic では共有) メンバーはすべて、スレッド セーフです。インスタンス メンバーは、スレッド セーフであるとは限りません。

CloudTableClient

この型の public static (Visual Basic では共有) メンバーはすべて、スレッド セーフです。インスタンス メンバーは、スレッド セーフであるとは限りません。

于 2012-11-06T09:40:56.537 に答える
7
  1. 残念ながら、それらはスレッドセーフではありません
  2. 幸いなことに、それはまったく問題ではありません。通信は HTTP に基づいているため、接続が再利用されることはなく、アプリが毎回新しい HTTP 接続を作成するだけです。したがって、スレッドごとにすべてを再作成するだけです。また、1 つのスレッドでもテストしましたが、クエリごとにすべてを再作成しても、それ以上の費用はかかりません。
于 2013-02-04T03:31:29.680 に答える