2012-11-06 3 views
18

다른 스레드 (ASP.NET 응용 프로그램)에서 Storage SDK 2.0을 사용하여 Azure 테이블 저장소에 쓰고 있습니다.Azure CloudTable은 스레드로부터 안전한가요?

CloudTable 객체 스레드 안전인가? CloudStorageAccount, CloudTableClient 및 CloudTable을 한 번만 (예 : 정적 구성자) 초기화 한 다음 다른 스레드에서 사용할 수 있습니까?

또는 공백에서 매번 CloudStorageAccount, CloudTableClient 및 CloudTable 개체를 만드는 것이 더 좋습니다 (this article에 표시됨). 어떤 식 으로든 성능에 영향을 줍니까?

테이블에 대해 작업을 실행할 때마다 CloudTable의 인스턴스를 가져 오는 것이 가장 좋은 방법은 무엇입니까? 이러한 유형의 (Visual Basic의 경우 Shared) 멤버

답변

11

CloudStorageAccount

모든 공용 static 스레드로부터 안전합니다. 모든 인스턴스 구성원은 스레드 안전성을 보장하지 않습니다. 이러한 유형의 (Visual Basic의 경우 Shared) 멤버

CloudTableClient

모든 공용 static 스레드로부터 안전합니다. 모든 인스턴스 구성원은 스레드 안전성을 보장하지 않습니다.

+0

그래서 테이블 요청을하는 것이 바람직한 방법은 무엇입니까? 매번 모든 개체를 만드시겠습니까? – alexey

+0

응용 프로그램의 목표/디자인에 따라 매우 다를 것이라고 생각합니다. 옵션을 다시 작성하거나 잠금을 통해 스레드를 안전하게 만들 수 있습니다. 각각 장단점이 있습니다. 나는 하나의 규칙이 맞다는 것을 의심한다 (그러나 나는 그때 컨설턴트로 일했다 :-)) –

7
  1. 불행하게도, 그들은
  2. 다행히 스레드 안전하지 않습니다, 그것은 전혀 중요하지 않습니다 통신이 더 연결이 재사용되지 않는 것을 의미하고 매번 앱을 단지 새를 만들어 HTTP에 기반 HTTP 연결. 스레드별로 모든 것을 다시 생성하십시오. 그리고 하나의 스레드에서조차도 테스트를 마쳤습니다. 각 쿼리마다 모든 것을 재 작성하면 비용이 들지 않습니다.
관련 문제