Was macht eine Methode fadensicher? Wie lauten die Regeln?

Gibt es Allgemeine Regeln/Richtlinien für das, was macht eine Methode thread-sicher? Ich verstehe, dass es gibt wahrscheinlich eine million one-off-Situationen, aber was im Allgemeinen? Ist es so einfach?

  1. Wenn eine Methode greift nur auf lokale Variablen, es ist thread-sicher.

Ist es das? Gilt das auch für statische Methoden?

Einer Antwort, zur Verfügung gestellt von @Cybis, war:

Lokale Variablen können nicht geteilt werden threads, da jeder thread hat seinen eigenen stack.

Ist, dass der Fall für statische Methoden?

Wenn eine Methode übergeben wird eine Referenz-Objekt, bedeutet das, dass break thread-Sicherheit? Ich habe einige der Forschung getan, und es gibt eine Menge gibt, über bestimmte Fälle, aber ich hatte gehofft, in der Lage sein zu definieren, indem Sie nur ein paar Regeln, Richtlinien zu Folgen, um sicherzustellen, dass eine Methode ist thread-sicher.

So, ich denke, meine ultimative Frage ist: "gibt es eine kurze Liste von Regeln, die definieren, eine thread-sichere Methode? Wenn ja, was sind Sie?"

BEARBEITEN

Viele gute Punkte wurden hier gemacht. Ich denke, die wirkliche Antwort auf diese Frage ist: "Es gibt keine einfachen Regeln, um thread-Sicherheit gewährleisten." Cool. Fein. Aber im Allgemeinen ich denke, die akzeptierten Antworten bietet eine gute, kurze Zusammenfassung. Es gibt immer Ausnahmen. So soll es sein. Kann ich mit Leben.

Kommentar zu dem Problem - Öffnen
Du sollst nicht auf Variablen zuzugreifen, sind auch accesseth durch andere threads ohne einen locketh. Kommentarautor: Hans Passant
Hanth pathant hat sich in ein igor! Kommentarautor: Martin James
Auch.. "Du sollst nicht auf Variablen zuzugreifen, sind auch accesseth durch andere threads ohne einen locketh' - unleth es dothent Rolle, dass viel, wenn der gelesene Wert ist ocasionally nicht die neuesten, oder ist sogar grob falsch. Kommentarautor: Martin James
Hier ist ein schöner blog von Eric zu nehmen, Sie in einen Wirbelwind. Kommentarautor: RBT

InformationsquelleAutor der Frage Bob Horn | 2012-03-24

Schreibe einen Kommentar