Forum: Object-Pascal / Delphi-Language
Delphi
by BUG,
11. Mai 2014
Ah, jetzt verstehe ich vermutlich, was du vorhast: Jeder übergebenen Funktion wird in deiner Funktion ein Lock zugeordnet.
Aber wie gesagt: Ein Deadlock muss nicht auftreten, wenn du rekursive Synchronisierungsmittel benutzt.
Wenn du trotzdem noch Rekursion feststellen möchtest, bleibt mein Vorschlage der Gleiche:
Merke dir pro Lock bzw. Methode, welcher Thread der Besitzer ist (sollte...
Forum: Object-Pascal / Delphi-Language
Delphi
by BUG,
11. Mai 2014
Ich glaube die Variante mit der Methode ist der falsche Ansatz: Warum darf ein anderer Thread die Methode nicht aufrufen?
Wichtig ist, ob der aktuelle Thread schon diesen Lock belegt hat ... und selbst dann: Mutexe und Critical-Sections unter Windows sind rekursiv / reentrant.
Du könntest aber für jeden Lock auch die Thread-ID speichern, die diesen Lock gerade besitzt.
Damit könntest du...