Jag har en statisk klass där jag behöver thread safety, och därmed använder lock() för att få exklusiv tillgång till variabler i klassen. Jag har två frågor angående lock som jag inte kan hitta så mycket information om.
1. lock( typeof(klassnamn)) rekommenderas på ett antal ställen, men låser jag tillgång till alla variabler i klassen? lock(this) fungerar naturligtvis inte eftersom instansiering av en statisk klass inte är tillåtet. Kan jag skapa ett specifikt lås för en metod genom att använda mig av t:ex typeof(metodNr1_LåsObjekt) ?
2. Om jag låser tillgång till hela klassen kommer isåfall följande scenario skapa ett deadlock?
public static class klassnamn
{
static klassnamn()
{
lock(typeof(klassnamn)) klassnamn.metod();
}
private static void metod()
{
lock(typeof(klassnamn)) //gör något;
}
}
Hoppas jag är någotsånär tydlig i frågan. Rekommendationer, idéer någon?