Je dois partager une valeur entre les threads sans dépasser sa limite. Une variable statique fait-elle cela? P>
5 Réponses :
Vous voulez dire que vous voulez que la variable soit thread-local? p>
Vous pouvez soit utiliser [Threadstatic] code] >
attribut ou le ThreadLocal
classe de .net 4. p>
Personnellement, je préférerais ThreadLocal
@ Gik25: J'essaierais toujours de concevoir votre code pour que ce soit N'a pas i> sur ceci. Il sera plus clair et plus facile à tester si vous donnez explicitement à chaque objet son contexte.
J'ai une application multithreadée où chaque thread est dédié à l'élaboration d'un ensemble de données d'entrée qui sont désormais accessibles comme suit: FORNUTURAHELPER DATI_FORNITURA = WORKFLOW.TEMPORARAYDATA ["FORNUTRA"] Comme ForNituraRaHelper; Code> My Objectif consiste à accéder facilement à ces données, comme suit:
Forniturahelper Dati_fornitura = temporaire data.fornitura; code>
temporaireData.fornitura code> serait statique, comme transaction.current son partagé sur le workflow. Mais puisque chaque thread exécute un WKF différent, il ne doit pas vaincre la limite du fil (l'idéal serait d'être local sur le WKF).
@ Gik25: Comme je l'ai dit, vous pourrait i> utiliser des thread-locaux pour cela, mais je ne le ferais certainement pas. Je donnerais à chaque tâche de traitement le contexte explicitement.
vous le décorez avec le Les variables statiques par défaut sont sur toutes les discussions dans une Appdomain. P> threadstaticattribute code>, pour rendre la variable statique partager uniquement sur le thread inindiqué. P>
Oui, vous devez faire attention à la synchronisation. P>
Les variables statiques sont partagées sur plusieurs threads dans une Appdomain. Tous les threads verront et agiront, sur le même exemple de variable statique. En tant que tel, si vous utilisez statique, vous voudrez probablement utiliser une forme de synchronisation pour protéger l'accès de cette variable. P>
Si vous souhaitez avoir une variable de thread-local, le ThreadLocal
classe le rend facile. Il fournit un moyen de générer et d'utiliser des données uniques par fil. P>
Qu'entendez-vous par «Sans dépasser sa frontière?»