Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.042 Beiträge
 
Delphi 12 Athens
 
#5

AW: TMREW-Synchronisierer BeginRead() reentrant bei BeginWrite() eines anderen Thread

  Alt 30. Mär 2014, 23:23
Aber wenn man z.B. in zwei Thread ein BeginRead ausführt und daraufhin direkt ein BeginWrite, dann könnte/wird man in einen Deadlock laufen, da beide Threads auf das Ende der
Sperren des anderen Threads warten.
Das sehe ich anders! Das BeginWrite entfernt zunächst den eigenen ReadLock, bevor es auf die Freigabe der anderen ReadLocks wartet. Das erlaubt dem Thread mit dem ersten BeginRead mit seinem BeginWrite durchzukommen. Dieses CodeSite-Log zeigt, daß es funktioniert:
Miniaturansicht angehängter Grafiken
mrew.png  
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat