AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi syncOjs.TEvent extrem langsam
Thema durchsuchen
Ansicht
Themen-Optionen

syncOjs.TEvent extrem langsam

Ein Thema von TomyN · begonnen am 26. Apr 2024 · letzter Beitrag vom 29. Apr 2024
Antwort Antwort
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
163 Beiträge
 
Delphi 10.3 Rio
 
#1

syncOjs.TEvent extrem langsam

  Alt 26. Apr 2024, 21:23
Hallo,

heute ist mir folgendes passiert: In meiner Anwendung habe ich ein 'klassisches' Eventszenario mit einem Thread mit waitforOject und einem Autoresetevent, der relativ oft (ca alle 10ms) aufgerufen wird.
Bisher habe ich das über die Windows API (CreateEvent, SetEvent etc.) gelöst.
Heute habe ich, im Zuge einer Fehlersuche, den Event durch syncOjs.TEvent ersetzt. Dabei hat sich die CPU Load, den der Taskmanager anzeigt, unter win10/64 (Delphi: 10.3 Rio) um ca den Faktor 3 erhöht
Das ganze konnte ich wirklich an diesem Umbau festmachen.

Jetzt frage ich mich, ob das wirklich so ist, und ob auch andere Syncobjekte wie TMutex oder TCriticalsection betroffen sind.

Tomy
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.359 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: syncOjs.TEvent extrem langsam

  Alt 26. Apr 2024, 21:39
TEvent ist eine direkte Kapselung der Event-API. Der Unterschied könnte im WaitFor-Aufruf liegen. TEvent kann man mit zwei verschiedenen Warteroutinen verwenden:
CoWaitForMultipleHandles (UseComWait = True) und WaitForMultipleObjectsEx (UseComWait = False)

Ich rate dir daher das WaitFor mit der vorher bei dir verwendeten Implementierung zu vergleichen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
163 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: syncOjs.TEvent extrem langsam

  Alt 26. Apr 2024, 21:42
Hi,

Also ich habe einfach if myEvent.waitFor(XXX) = wrSignaled verwendet, halt analog zu dem
If ( WaitForSingleObject(myEventHandle, XXX) = wait_object_0 ) das ich vorher hatte.
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.359 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: syncOjs.TEvent extrem langsam

  Alt 26. Apr 2024, 23:08
Und mit welchen Parametern erzeugst du TEvent?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
TomyN

Registriert seit: 8. Nov 2006
Ort: Bayreuth
163 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: syncOjs.TEvent extrem langsam

  Alt 27. Apr 2024, 05:59
Code:
myEvent := syncObjs.TEvent.Create(false);
Nachdem es bei
Code:
myEvent := syncObjs.TEvent.Create(nil, false, false, nil);
was analog zum bisherigen
Code:
myEventHandle := CreateEvent(nil, false, false, nil);
gewesen wäre, eine Fehlermeldung des Compilers gegeben hatte.
Thomas Neumann
Meine Projekte
www.satlive.audio
www.levelcheck.de
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
101 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: syncOjs.TEvent extrem langsam

  Alt 29. Apr 2024, 11:12
Code:
myEvent := syncObjs.TEvent.Create(false);
Mit diesem Aufruf ist ManualReset=True im Gegenatz zu deinem bisherigen Code.
Delphi-Quellcode:
constructor TEvent.Create(UseCOMWait: Boolean);
begin
  Create(nil, True, False, '', UseCOMWait);
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz