![]() |
Re: String von Thread an Programm senden - Stilfrage!
Ja, aber ich hab nunmal (leider) DLLs. Vielleicht garnicht so schlecht. Habe glaub ich, wenn ich das alles richtig rauf habe, einiges dazu gelernt.
In meinen Testprogrammen ging das ja alles auch recht easy - waren ja auch keine DLLs! Jedenfalls bedanke ich mich nochmal recht herzlich. PS: Ähm, ich könnte dieser Container-Klasse doch locker auch ein Array hinzufügen und von der Main-App sicher darauf zugriefen, richtig? |
Re: String von Thread an Programm senden - Stilfrage!
Also, du darfst alle Messages von WM_User bis (ich glaube) $C000 verwenden. du kannst auch noch mehr definieren, genauso, wie du noch mehr Variablen reinlegen kannst.
In dem beginwrite und endwrite etc. den Thread zu unterbechen, dürfte kein Problem sein, Macci. Wie gesagt, wenn die Klasse von TsimpleRWSync abgeleitet ist, dann wird im Hintergrund nur CriticalSection.enter bzw ~.leave aufgerufen. Was genau das TMultiReadExclusiveWriteSynchronizer im Hintergrund macht, ist mir nicht ganz bewusst. Außer dass es eben zwischen lesenden und schreibenden Zugriff unterscheidet. Und das ganze wird mit Events geregelt und mit einigen Interlocked-Funktionen. Sollte zu jedem Zeitpunkt threadsicher sein. |
Re: String von Thread an Programm senden - Stilfrage!
Japp, genau so ist es sirus. Der Unterschied zwischen Lesen und Schreiben wird einfach mit 2 binären Semaphoren von Delphi realsiert. Die könnte man auch selbst programmieren, ist aber hier nicht unbedingt nötig (wieso das Rad neu erfinden?). TMultiReadExclusiveWriteSynchronizer macht, wenn mich nicht alles täuscht, nichts anderes als diese Semaphore zu realsieren.
So wie du es geschrieben hast, müsste es gut funktionieren. Trotzdem sollte man Multithread-Anwendungen natürlich immer ausführlich testen, weil es kann sein, dass es 1000x gutgeht, und dann beim 1001. mal (beim Kunden) nicht. Am besten wäre es, die Funktionalität zu beweisen, was aber sehr schwer ist. (Ich finde dieses Beweisen schon bei Single-Thread Anwendungen sehr schwer) |
Re: String von Thread an Programm senden - Stilfrage!
Zitat:
|
Re: String von Thread an Programm senden - Stilfrage!
*codeanschau*
Delphi-Quellcode:
Japp, genau das, was ich sagte. Es sind 2 Semaphore (einer zum Lesen, und einer zum Schreiben).
TMultiReadExclusiveWriteSynchronizer = class
private ... public constructor Create; destructor Destroy; override; procedure BeginRead; procedure EndRead; procedure BeginWrite; procedure EndWrite; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz