Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

Re: Wieso bekomme ich hier einen Deadlock?

  Alt 24. Mai 2010, 22:59
Für den Progress könnte ich es mit etwas Mühe so machen, das stimmt. Etwas Mühe deshalb, weil es sich um ein Protokoll handelt, welches simultane Transfer über ein einzelnes Socket realisiert (praktisch ein Multiplexer / Demultiplexer, wobei der Thread zum Multiplexer Teil gehört). Ich müsste also z.b. im Timer auch auf die ThreadList zugreifen, die alle Transfer Objekte enthält und dann alles iterieren. Somit würde beim Zugriff auf LockList auch wieder mit dem Thread synchronisiert.

Das eigentliche Problem sind aber eher die anderen Ereignisse, die man nicht so einfach ändern kann. Das Protokoll kann beispielsweise ganze Dateien verschicken. Dabei soll die Datei allerdings NICHT zuerst in den Speicher geladen und dann verschickt werden. Genauso gestaltet sich der Empfang. Es gibt ein OnTransferData() Event, welches von mir dafür gedacht wurde, die im aktuellen Paket empfangenen Daten in die entsprechende Datei zu schreiben.
Die Daten werden aus verschiedenen Gründen in 8 KiB Blöcke gestückelt. Zum einen natürlich, damit mehrere Übertragungen simultan laufen können und zum zweiten aufgrund einer "on the fly" Verschlüsselung und Kompression.
  Mit Zitat antworten Zitat