non ho particolari dubbi in merito alla sincronizzazione di particolari metodi statici, ma vista la particolare natura nel costruttore statico, credevo che l'accesso fosse gestisto direttamente dal runtime, dopotutto il costruttore statico dovrebbe essere richiamato una sola volta, almeno che non sia reciclato tutto l'AppDomain.

public class Singleton
    {
        private static Singleton instance;

        static Singleton()
        {
            if (instance == null)
            {
                instance = new Singleton();
            }
        }

        public static Singleton Instance
        {
            get
            {
                return instance;
            }
        }
    }


ciao marco
Modificato da nostromo il 23 marzo 2006 14.18 -

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
Questo è vero se ragioni in una ottica single-thread.

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
Certo, ma esattamente come ogni altro metodo marcato come "static": uno e uno solo... ma per thread!
In conclusione: lock anche nei costruttori statici (se applicazione multi-thread)

Matteo Casati
GURU4.net
onestamente i mie dubbi ancestrali rimangono.

parafrasando Raffaele Riali partendo da :

Il campo static è condiviso solo all'interno dello stesso processo
Il campo static è condiviso da tutti i thread che girano dal processo

fin quà ci sono


il costruttore statico dovrebbe essere richiamato una sola volta per il processo o no?

quello che mi assilla è perche mettere il lock nel costruttore statico.

quindi come è possibile che il costruttore statico si richiamato per ogni thread ?

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
penso di avero trovato le mie risposte:

http://www.mcse.ms/archive109-2004-5-648118.html

il costruttore statico viene richiamto una e una sola volta per processo.

il lock ci sta se l'oggetto che inizializzo nel costruttore fa uso di altre risorse.

ok adesso capisco perche in alcune classi del framework c'è il lock nel costruttore statico mentre in alreo come SqlClientFactory no :)

grazie a tutti per la chiaccherata

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.