AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rechnerauslastung

Ein Thema von juelin · begonnen am 11. Jun 2024 · letzter Beitrag vom 11. Jun 2024
 
juelin

Registriert seit: 9. Mai 2006
Ort: Mannheim
142 Beiträge
 
Delphi XE5 Professional
 
#1

Rechnerauslastung

  Alt 11. Jun 2024, 10:30
Hallo liebe Delphigemeinde,
ich habe ein Programm gemacht, welches Daten von der Soundkarte holt und diese bearbeitet.
Da ich die Daten sehr schnell brauche rufe ich im Mainthread alle 8 ms einen Routine auf, welche die Daten bereit stellt
und einen zweiten Thread zur verarbeitung von den Daten startet.
Das ganze soll so 10-15 Minuten laufen.
Das sind 112500 Threads die ich in 15 Minuten starte.
Die Routine die die Daten verarbeitet läuft ca. 200ms.
Das bedeutet, das nach 15 Minuten noch 112050 Threads laufen.
Das das den Rechner ordentlich belastet brauche ich wohl nicht erwähnen.
Nun zu meinem Problem:
Im Maintrhread habe ich eine Menüleist, mit der ich den Vorgang starte und stoppe.
Aber wenn das Programm mit den Threads läuft kann man die Menüleiste nicht mehr bedienen.
Hat da jemand eine Idee?
Anbei die Routine die die Threads startet (alle 8 ms).
Delphi-Quellcode:
function RecordingCallback(Handle: HRecord; buffer: Pointer; length: DWord; user: Pointer): boolean; stdcall;
  var rueck: Boolean;
  var x1: integer;
  var x2: Cardinal;
  var ThreadHandle: THandle;
  var ThreadId: DWORD;
  var test7: PAnsiChar;
  var test8: integer;
  var test9: PAnsiChar;
begin
  rueck:=False;
  if Length > 0 then
  begin
    x2:=WaveStream.Write(buffer^,length);
    THreadNum:=Threadnum+1;
    rueck:=True;
    BASS_ChannelGetData(ChannelInput, @FFTData0, BASS_DATA_FFT4096);
    GetMem(test9, 8192);
    test7:=@FFTData0;
    for test8:=0 to 8191 do
    begin
      test9[test8]:=test7[test8];
    end;
    adresse:=test9;
    ThreadHandle:=BeginThread(nil, 0, TFNThreadStartRoutine(@Berechnen), nil, 0, ThreadId);
    if ThreadHandle <> 0 then CloseHandle(ThreadHandle);
  end;
  Result:=rueck;
end;
Danke für die Hilfe und Gruß
Jürgen
Jürgen Linder
  Mit Zitat antworten Zitat
 

 

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 00:02 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