Vermeidung von Deadlocks bei verschachtelten Aufrufen beim Entwurf einer Thread-sicheren KlasseC++

Programme in C++. Entwicklerforum
Anonymous
 Vermeidung von Deadlocks bei verschachtelten Aufrufen beim Entwurf einer Thread-sicheren Klasse

Post by Anonymous »

Ich verstehe, dass ich ein Mutex-Mitglied in einer Klasse verwenden und es in jeder Methode sperren kann, um einen Datenwettlauf in einer Multithreading-Umgebung zu verhindern. Bei einer solchen Methode kann es jedoch zu einem Deadlock kommen, wenn in den Methoden der Klasse verschachtelte Aufrufe vorhanden sind, wie etwa add_one() und add_two() in der folgenden Klasse. Die Verwendung unterschiedlicher Mutex für jede Methode ist eine Problemumgehung. Aber gibt es eine prinzipiellere und elegantere Möglichkeit, Deadlocks bei verschachtelten Aufrufen zu verhindern?

Code: Select all

class AddClass {
public:
AddClass& operator=(AddClass const&) = delete; // disable copy-assignment constructor
AddClass(int val) : base(val) {}
int add_one() { return ++base; }
int add_two() {
add_one;
add_one;
return base;
}
private:
int base;
};

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post