Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
atomic - deadlock
Hi,
angenommen der gemeinsame Zustand mehrerer Threads besteht nur aus atomic-Klassen. Können dann noch Deadlocks auftreten?
Wenn ja, was wäre ein Beispiel?
Die notwendige Bedingung, dass iterative Anforderungen nicht erlaubt sind, hast du damit nicht eliminiert.
Betrachte den folgenden Pseudocode:
[Code=Java]
atomic bool A = false;
atomic bool B = false;
void thread1() {
while (A) {};
A = true;
while (B) {};
B = true;
// A und B angefordert
// Tue etwas
A = false;
B = false;
}
// Genau A und B andersherum anfordern
void thread2() {
while (B) {};
B = true;
while (A) {};
A = true;
// A und B angefordert
// Tue etwas
A = false;
B = false;
}[/Code]