Ho una libreria molto vecchia ma molto grande che sto considerando di convertire in una libreria di classi C#. La libreria esistente utilizza molte variabili globali memorizzate nel TLS. C# non ha un concetto reale di variabili globali, ma una soluzione alternativa è usare una classe statica chiamata qualcosa come GlobalVar e metterle tutte in questa classe in modo che possano essere accessibili via GlobalVar.xxxxxxArchiviazione locale di thread per la libreria di classi C#
Tuttavia, il mio pensiero è che questo si spezzerà tutto il codice esistente che viene convertito come classe GlobalVar sarà una normale classe globale e non per l'archiviazione di thread. C'è un modo per ottenere questi globals per thread? vale a dire qual è l'equivalente di __declspec (thread) statico in C#?
Dovrei aggiungere a questo punto che odio le variabili globali. Penso che siano spesso il risultato di un design scadente. Tuttavia, a causa delle ristrette restrizioni temporali, la prima fase consiste nel convertire la libreria in C# con il minimo sforzo e quindi la fase 2 sarà la riprogettazione corretta.
Hehe, sembra insistere nell'insegnarci la lingua italiana :-) –
@xanatos 'Il ThreadStaticAttribute può essere utilizzato solo su campi statici' non è sempre vero. Le persone potrebbero voler dichiarare una variabile per-thread per istanza –
Il mio italiano non è eccezionale ma scherza a parte, molte grazie per l'aiuto. Anche se sono un po 'preoccupato per l'ultimo paragrafo che riguarda l'uso di un ThreadPool. Non penso che questo sarà un problema all'inizio, ma è qualcosa che potrebbe essere necessario prendere in considerazione in futuro. – Jonnster