---
title: "lock(): scope/deadlock?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/154359-lock-scope-deadlock"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Crypth"
published: "2006-11-30T08:50:23.000Z"
updated: "2006-12-01T09:19:38.000Z"
replies: 2
views: 467
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/154359-lock-scope-deadlock"
---

# lock(): scope/deadlock?

## #1 — Crypth, 2006-11-30T08:50Z

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?

Permalänk: https://www.webforum.nu/p/154359

## #2 — emission, 2006-11-30T22:50Z

Deadlock bör det inte bli, däremot bör man inte låsa på typeof(klassnamn), eller något annat som är publikt tillgängligt. Lås på en statisk medlemsvariabel i stället.

Permalänk: https://www.webforum.nu/p/1903638

## #3 — Crypth, 2006-12-01T09:19Z

Tack, jag fick det hela förklarat för mig ordenligt också. För att förtydliga låser man normalt sett bara det som behövs låsas, som du säger, t:ex en statisk medlemsvariabel om den ändras i en kritisk sektion.

Om många delar skall låsas skapar man i regel en för ändamålet specifik medlemsvariabel av t:ex typen object och låser på det när man ändrar något i en kritisk sektion.

Permalänk: https://www.webforum.nu/p/1903679

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/154359-lock-scope-deadlock
