 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1280 Wohnort: Ruhrpott
|
Verfasst am: 11.11.2014, 16:11 Titel: |
|
|
Und als Rocker gibt es TerminateThread. Obwohl - das ist dann schon eher ein Mafioso.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 11.11.2014, 21:49 Titel: |
|
|
Hmm, ein Thread, der andere Threads immer gleich abschießt, wenn er auf Ressourcen warten muss, das klingt irgendwie ... nach einer ganz bestimmt tollen Idee
(sorry for offtopic ...) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1280 Wohnort: Ruhrpott
|
Verfasst am: 13.11.2014, 08:55 Titel: |
|
|
So richtig schnell ist das Filemapping aber nicht.
Ich habe es mal probeweise in eine Anwendung implementiert, bei der 56 je 7 Zeichen lange Strings von einem Programm an ein anderes geschickt werden. Mit Filemapping dauert das 1,7 Sekunden, bei dem vorher verwendeten Verfahren per SendMessage ist das Ganze schon nach 0,01009 Sekunden erledigt, obwohl ich da jedes Zeichen einzeln rüberschicke.
Und das Übertragen einer 918 x 56 Pixel großen Grafik dauert fast eine Viertelsekunde.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 13.11.2014, 17:27 Titel: |
|
|
Filemapping ist so ziermlich die schnellste Variante überhaupt, um große Datenmengen zwischen Programmen unter Windows auszutauschen.
Es kommt aber auch ein bisschen auf den Einsatzzweck an - Wenn du nur ein paar Bytes an Strings übertragen willst, ist SendMessage vielleicht schneller, weil der Overhead, eine virtuelle Datei zu erzeugen und zu öffnen vielleicht größer sein könnte.
Man darf sich aber halt auch nicht doof anstellen bei der Implementierung mittels Shared Memory, von daher solltest du zumindest mal erläutern, wie du es in deinem Programm verwendest.
Vermutlich liegt es daran, dass Locking eben doch nicht so trivial ist, wie du es auf der vorherigen Threadseite dargestellt hast - Locking kostet grundsätzlich Performance, und eine so niedrige Anzahl an Locks wie möglich zu setzen ist alles andere als einfach in vielen Szenarien.
Ich habe jedenfalls schon eine Plugin-Bridge (Container-Anwendung für Plugins, sodass die Hauptanwendung nicht abstürzt, wenn ein Plugin Mist baut) mit Shared Memory und Events gebaut, und die kann ein dutzend MB an Daten jede Sekunde übertragen ohne mit der Wimper zu zucken. Die Menge ist dabei eigentlich komplett irrelevant - Es war wichtiger, jedes einzelne Lock abzuwägen, um das performant hinzubekommen. In einem konkreten Beispiel steuere ich hier 27 Plugins gleichzeitig an, die jeweils ein paar dutzend Mal pro Sekunde verarbeitet werden (pro Plugin sind das ca. 350KB Daten je Sekunde, die hin- und dann wieder zurückgeschickt werden). Jede Verarbeitung impliziert mindestens ein Lock. Die Betonung liegt hier auf "mindestens", aber ich habe eben ein paar Tricks eingebaut, sodass das in 99% der Fälle "genau 1" ist. Ohne diese Optimierungen lief der Code auch viel langsamer. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 14.11.2014, 10:11 Titel: |
|
|
Jojo hat Folgendes geschrieben: | Man darf sich aber halt auch nicht doof anstellen bei der Implementierung mittels Shared Memory, von daher solltest du zumindest mal erläutern, wie du es in deinem Programm verwendest. |
Auch immer darandenken: Es gibt innerhalb der Software-Entwicklung den eigenständigen Berufszweig des Software-Architekten. Dieser codiert nicht eine Anwendung im Detail aus, sondern legt aufgrund der Anforderungen die zu verwendenden Techniken und Technologien fest. Shared Memory wäre so eine Technik, aber selbstverständlich startet die Arbeits des Architekten schon eine Stufe höher, nämlich überhaupt einmal die Aufteilung in Prozesse selber, also ob die Aufgabe als monolithisches grosses .EXE gelöst werden kann oder ob es eine Handvoll Dienste noch braucht.
@Input: So betrachtet einmal Dein Problem aus reiner Endanwenderperspektive (=diejenige Person, dessen PC-Administrator einmalig das INSTALL.EXE doppelklickt und der Anwender arbeitet daraufhin täglich mit dem Programm. Dem Anwender interessieren logischerweise Details, wie es programmiert ist, überhaupt nicht!) formulieren, also völlig losgelöst von irgendwelchen Details innerhalb von FreeBasic. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1280 Wohnort: Ruhrpott
|
Verfasst am: 14.11.2014, 10:31 Titel: |
|
|
"doof" ist das richtige Stichwort. Ich hatte senderseitig einen "Sleep 1" - Befehl in der Übertragungsschleife stehen. Und der hat sich auch immer ganz klein gemacht, wenn ich an der Stelle durchgescrollt habe. Jetzt dauert die Übertragung ca. 0,002 Sekunden und ist damit 5mal so schnell wie SendMessage. Vielen Dank für den Hinweis.
Falls es dich interessiert: Das Programm, mit dem ich das hier ausprobiere, ist eine Sortierhilfe zum Zusammenstellen von Musik-CDs, die mit Winamp zusammenarbeitet. Mit einem transparenten Fenster, das ich über die Playlist lege, lasse ich mir für jeden Titel die verbleibende Restzeit der CD anzeigen. Diese wird im Hauptprogramm berechnet und zusammen mit einigen anderen Informationen an das Fenster geschickt, das seinerseits in einem eigenen Prozess läuft.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1280 Wohnort: Ruhrpott
|
Verfasst am: 16.11.2014, 02:32 Titel: |
|
|
@Input:
Ich nehme an, dir raucht schon gehörig der Kopf. Um das noch ein wenig anzuheizen, habe ich mir den Spaß gemacht, das weiter oben gepostete Demoprogramm für eine weitere Methode zum Datenaustausch zwischen Programmen, von der hier auch schon die Rede war, umzuschreiben und als Codebeispiel hochzuladen.
Viel Spaß beim Ausprobieren.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|