Als «thread-safety» getaggte Fragen

Ein Code ist threadsicher, wenn er Datenstrukturen nur so manipuliert, dass er eine konsistente Ausführung dieses Codes durch mehrere Threads ermöglicht. Ein Code kann threadsicher, bedingt sicher (gegenseitiger Ausschluss erforderlich) oder unsicher (kann nur von einem Thread sicher verwendet werden) sein.

527
Wie funktioniert das Schloss genau?

Ich sehe, dass wir für die Verwendung von Objekten, die nicht threadsicher sind, den Code mit einer Sperre wie folgt umschließen: private static readonly Object obj = new Object(); lock (obj) { // thread unsafe code } Was passiert also, wenn mehrere Threads auf denselben Code zugreifen (nehmen...

179
Queue.Queue vs. collection.deque

Ich brauche eine Warteschlange, in die mehrere Threads Inhalte einfügen können und aus der mehrere Threads lesen können. Python hat mindestens zwei Warteschlangenklassen, Queue.Queue und collection.deque, wobei die erstere anscheinend die letztere intern verwendet. Beide behaupten, in der...

156
Was macht eine Methode threadsicher? Wie lauten die Regeln?

Gibt es allgemeine Regeln / Richtlinien dafür, was eine Methode threadsicher macht? Ich verstehe, dass es wahrscheinlich eine Million einmaliger Situationen gibt, aber was ist im Allgemeinen? Ist es so einfach? Wenn eine Methode nur auf lokale Variablen zugreift, ist sie threadsicher. Ist es...

123
Was bedeutet threadsafe?

Kürzlich habe ich versucht, von einem Thread (außer dem UI-Thread) auf ein Textfeld zuzugreifen, und es wurde eine Ausnahme ausgelöst. Es sagte etwas über den "Code ist nicht threadsicher" aus und so schrieb ich einen Delegaten (Beispiel von MSDN half) und rief ihn stattdessen auf. Trotzdem...

121
Thread-sichere List <T> -Eigenschaft

Ich möchte eine Implementierung List<T>als Eigenschaft, die ohne Zweifel threadsicher verwendet werden kann. Etwas wie das: private List<T> _list; private List<T> MyT { get { // return a copy of _list; } set { _list = value; } } Es scheint immer noch, dass ich eine Kopie (geklont)...