Just nu i M3-nätverket
Gå till innehåll

Referenstyper i static-metoder


Brimo

Rekommendera Poster

Hej!

 

Jag har en fråga om objekt som skapas i static-metoder. Det gäller en ASP.NET-applikation, så jag utgår ifrån att den är multitrådad per definition.

 

Om jag förstått rätt, har alla olika trådar sin egen stack, medan de delar heapen. Med andra ord borde det här vara ok, eftersom variabeln som deklareras är en value type:

 

//Exempel 1

public class SomeClass
{
  public static int SomeMethod()
  {
     int i;
     ...
  }
}

Om det däremot delkareras en variabel av reference type, är det då trådsäkert?

 

//Exempel 2

public class SomeClass
{
  public static int SomeMethod()
  {
     SomeOtherClass obj = SomeOtherClass();
     ...
  }
}

 

Så frågan är, kan man göra som i exempel 2, eller kommer olika trådar som anropar SomeMethod() samtidigt att manipulera samma obj?

Länk till kommentar
Dela på andra webbplatser

Jag har inget klockrent svar annat än att jag aldrig upplevt att två trådar skulle ha krockat i iis. Betyder inte att det inte skett, men jag har inte upplevt det.

 

Men om du är orolig över det så försök använda så många immutable-objekt som möjligt. Dvs sådana du inte kan ändra på hur som helst. Då blir du tvungen att skapa nya instanser av dem, vilket kommer kräva lite mer minne, men inte borde vara så stort problem. Så länge du inte väljer att lagra gigabyte stora objekt naturligtvis.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...