2012-11-06 6 views
18

Sto scrivendo nell'archivio di Azure Table utilizzando Storage SDK 2.0 da diversi thread (applicazione ASP.NET).Azure CloudTable è thread-safe?

Is CloudTable oggetto thread-safe? Posso inizializzare CloudStorageAccount, CloudTableClient e CloudTable solo una volta (ad esempio, in un constost statico) e quindi usarli in thread diversi?

Oppure è meglio creare tutti gli oggetti CloudStorageAccount, CloudTableClient e CloudTable ogni volta da uno spazio (come mostrato in this article)? Influisce in qualche modo sulle prestazioni?

Qual è un modo preferibile per ottenere un'istanza di CloudTable ogni volta che si esegue un'operazione contro il tavolo?

risposta

11

CloudStorageAccount

statici pubblici (in Visual Basic) di questo tipo sono thread-safe . Non è garantito che i membri di istanza siano protetti da thread .

CloudTableClient

statici pubblici (in Visual Basic) di questo tipo sono thread-safe . Non è garantito che i membri di istanza siano protetti da thread .

+0

Quindi, qual è il modo preferito per effettuare le richieste di tabella? Crea tutti gli oggetti ogni volta? – alexey

+0

Penso che sarebbe molto diverso a seconda dell'obiettivo/design dell'applicazione, le opzioni sono sia per ricreare e/o renderlo thread sicuro bloccando. ognuno ha i suoi pro e contro. Dubito che ci sia una regola per tutti (ma poi ero un consulente :-)) –

7
  1. Purtroppo, non sono thread-safe
  2. Per fortuna, non importa affatto: La comunicazione si basa su HTTP, il che significa che nessuna connessione viene riutilizzata e ogni volta l'applicazione crea solo un nuovo Connessione HTTP Quindi ricrea semplicemente tutto per thread. E ho provato anche in un thread, ricreare tutto per ogni query non costa niente di più.