quelles techniques doivent être utilisées pour des objets de poignée en asp.net Cache pour éviter les problèmes d'accès multiples threads de travail asp.net?

StackOverflow https://stackoverflow.com/questions/3672281

Question

depuis asp.net contient plusieurs threads qui exécutent en même temps.
donc si 2 fils accéder à un objet (simple ou complexe) que je suis arrivé du cache du asp.net HttpContext.
Ca ne peut pas conduire à des problèmes d'état sur cet objet si ces 2 theads essayé de modifier / lire en même temps?
Alors, quel genre de précautions dois-je mettre en œuvre?
Par exemple, je pense peut-être l'objet de blocage tout en travaillant avec elle? (Wont cette cause à des problèmes de performance?)
ou peut-être quand je récupérer un objet à partir du cache que je devrais créer une copie de celui-ci?
ou peut-être je ne à vous soucier de ce problème du tout?
merci

Était-ce utile?

La solution

Vous devez décider ce en fonction du contexte de votre problème, une solution unique ne fonctionnera pas ici. Si vous ne lisez données, alors vous aurez pas de problèmes de filetage. Si vous écrivez des données sur cette fréquence, son inutile en utilisant le cache. Si c'est un peu un mélange et la mise en cache ne l'aide avec des performances etc, alors vous soit besoin de recourir à des techniques normales de synchronisation de fil (par exemple, des serrures écrivain de lecteur) ou peut-être faire votre immuable objet où des modifications à votre objet toujours créer un nouvel objet. Cela conduit de choix à enfiler ses propres problèmes comme le nouvel objet doit alors remplacer l'ancien objet dans le cache.

Autres conseils

Dans 5 ans des projets de développement ASP.NET, je ne l'ai jamais rencontré une situation où cela était un souci.

Cela étant dit ... Vous n'êtes certainement pas avoir un problème lire tous les articles. Si vous avez un objet que vous souhaitez modifier souvent, pourquoi est-il dans le cache pour commencer? Si vous n'avez pas besoin de le modifier souvent, puis verrouiller l'objet ne sera pas un problème de performance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top