Tengo una biblioteca muy antigua pero muy grande que estoy considerando convertir a una biblioteca de clase C#. La biblioteca existente usa muchas variables globales almacenadas en TLS. C# no tiene un concepto real de variables globales pero una solución es usar una clase estática llamada algo así como GlobalVar y ponerlas todas en esta clase para que se pueda acceder a ellas a través de GlobalVar.xxxxxxSubproceso de almacenamiento local para C# Class Library
Sin embargo, mi pensamiento es que esto se romperá todo el código existente que se está convirtiendo como clase GlobalVar será una clase global normal y no por almacenamiento de subprocesos. ¿Hay alguna forma de obtener estos globales por hilo? es decir, ¿cuál es el equivalente de __declspec (hilo) estático en C#?
Debo añadir en este punto que odio las variables globales. Creo que a menudo son el resultado de un diseño pobre. Sin embargo, debido a las restricciones de tiempo, la primera fase es convertir la biblioteca a C# con un mínimo esfuerzo y luego la fase 2 será rediseñarlos adecuadamente.
Hehe, parece que insiste en enseñarnos el idioma italiano :-) –
@xanatos 'The ThreadStaticAttribute se puede usar solo en campos estáticos' no siempre es cierto. La gente puede querer declarar una variable por cada hilo por instancia –
Mi italiano no es tan bueno, pero bromear, muchas gracias por la ayuda. Aunque estoy un poco preocupado por el último párrafo relacionado con el uso de ThreadPool. No creo que esto sea un problema al principio, pero es algo que podría necesitar consideración en el futuro. – Jonnster