¿cuál es la mejor manera de almacenar algunas variables locales para cada hilo?Enhebrar almacenamiento local
Respuesta
puede indicar que las variables estáticas deben almacenarse por subproceso mediante el atributo [ThreadStatic]
:
[ThreadStatic]
private static int foo;
Otra opción es pasar de un parámetro en el método de inicio de la rosca. Deberá mantener el alcance, pero puede ser más fácil de depurar y mantener.
Otra opción en el caso de que alcance es un problema que puede utilizar Ranuras de datos con nombre p.
//setting
LocalDataStoreSlot lds = System.Threading.Thread.AllocateNamedDataSlot("foo");
System.Threading.Thread.SetData(lds, "SomeValue");
//getting
LocalDataStoreSlot lds = System.Threading.Thread.GetNamedDataSlot("foo");
string somevalue = System.Threading.Thread.GetData(lds).ToString();
Ésta es sólo una buena idea si usted no puede hacer lo que James Kovacs y AdamSane describen
Si utiliza .Net 4.0 o superior, por lo que yo sé, el método recomendado es utilizar System.Threading.ThreadLocal<T>
que también da inicialización perezosa como una bonificación.
Este método tampoco está limitado a campos estáticos. –
- 1. Almacenamiento local y JSON
- 2. HTML 5 almacenamiento local
- 3. local Almacenamiento y bloqueo
- 4. almacenamiento local y almacenamiento de sesión
- 5. Para enhebrar o no para enhebrar
- 6. ¿Cuándo enhebrar?
- 7. Response.redirect mata el almacenamiento local?
- 8. Almacenamiento Thread-Local y iOS
- 9. Almacenamiento local HTML5 y Chrome
- 10. Velocidad/costo de almacenamiento local
- 11. Almacenamiento local HTML5 no persistente
- 12. Enhebrar Box2D con pthreads
- 13. Enhebrar varias llamadas asíncronas
- 14. (HTML 5) ¿Cuánto es demasiado almacenamiento local?
- 15. Almacenamiento local para la aplicación de iPhone
- 16. Base de datos para almacenamiento local
- 17. capa de almacenamiento local para Entity Framework?
- 18. Guardar un modelo en el almacenamiento local
- 19. Recursos para aprender a enhebrar
- 20. C# enum para enhebrar auto-conversión?
- 21. ¿Un uso razonable de enhebrar en C#?
- 22. Almacenamiento de archivos de audio en html5 almacenamiento local-descarga de archivos de audio con javascript
- 23. Subproceso de almacenamiento local para C# Class Library
- 24. ¿Alternativas de extensión de Chrome al almacenamiento local?
- 25. ¿En qué se diferencia indexedDB conceptualmente del almacenamiento local HTML5?
- 26. Android 4.0.1 rompe el almacenamiento local de WebView HTML 5?
- 27. ¿Para qué puedes usar el almacenamiento local de HTML5?
- 28. ¿Popup.html y background.html comparten el mismo almacenamiento local?
- 29. ¿Las extensiones de Chrome tienen acceso al almacenamiento local?
- 30. Tutorial de Azure: cómo usar el almacenamiento blob local
¿Puedo almacenar la lista estática de objetos por subproceso con este atributo? –
@DainiusKreivys ¡Sí! No importa cuál sea el tipo de variable, su instancia única se mantendrá por hilo siempre que use el atributo '[ThreadStatic]'. Hice una prueba rápida usando '[ThreadStatic] private static List foo = new List {20, 30};'. Luego, en otro hilo inicialicé la misma variable foo con una lista que contenía tres enteros y cuando ese hilo terminó, mi lista original que contenía dos elementos referidos por el hilo principal permaneció intacta. –
RBT