AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Suchfunktion Ergebnis der Suchanfrage

Ergebnis der Suchanfrage


Datum des Suchindex: Heute, 17:02

Parameter dieser Suchanfrage:

Suche in Thema: Selbstgebauter Threadpool funktioniert nicht
Suche alle Beiträge, die von "Apollonius" geschrieben wurden
• Suchmethode: "Suche nach allen Begriffen"
• Nach Datum (firstpost) sortiert
• Zeige Treffer als Beiträge
Zeige 9 von insges. 9 Treffern
Suche benötigte 0.006s

Es liegen Ergebnisse in folgenden Bereichen vor:

  • Forum: Sonstige Fragen zu Delphi

    Re: Selbstgebauter Threadpool funktioniert nicht

      Delphi
      by Apollonius, 11. Mär 2009
    Möglicherweise genügt es, wenn du einen eigenen Thread mit einer Nachrichtenschleife erstellst, ihm ein Fenster spendierst und bei diesem dann mit WSAAsyncSelect alle Sockets registrierst, das ist dann einfacher als mit den Events. Aber ganz ehrlich: Ich habe keine Ahnung, wie sich Windows bei so einer Belastung verhält. Versuche es.
  • Forum: Sonstige Fragen zu Delphi

    Re: Selbstgebauter Threadpool funktioniert nicht

      Delphi
      by Apollonius, 11. Mär 2009
    Das ist aber kein Grund zu pollen. Es gibt bei den Winsockets zwei Möglichkeiten, ereignisgesteuert zu arbeiten, nämlich mit WSAAsyncSelect und WSAEventSelect. Wenn dabei bei einem Socket etwas anliegt, wird eine Nachricht geschickt bzw. ein Event gesetzt. Wenn dir die Methode mit den Nachrichten nicht schnell genug ist, erstelle dir für jedes Socket ein Event und verwende WSAEventSelect. Wenn du...
  • Forum: Sonstige Fragen zu Delphi

    Re: Selbstgebauter Threadpool funktioniert nicht

      Delphi
      by Apollonius, 11. Mär 2009
    procedure TThreadPool.AddJob(AJob: TObject);
    begin
    PostQueuedCompletionStatus(FIOComPort,1,Cardinal(AJob),nil);
    end;

    procedure TThreadPool.Dead;
    var i: Integer;
    begin
    for i:=1 to FThreads.Count do
    PostQueuedCompletionStatus(FIOComPort,0,0,nil); //"Beenden"-Nachricht schicken
  • Forum: Sonstige Fragen zu Delphi

    Re: Selbstgebauter Threadpool funktioniert nicht

      Delphi
      by Apollonius, 11. Mär 2009
    Häng bitte mal die Units an. So fehlt doch noch ziemlich viel Relevantes.

    Warum bist du so ein Freund von Polling? Zumindest beim Threadpool ist eventbasiertes Arbeiten Pflicht. Bei den Sockets sehe ich auch keinen Grund dagegen.
  • Forum: Sonstige Fragen zu Delphi

    Re: Selbstgebauter Threadpool funktioniert nicht

      Delphi
      by Apollonius, 11. Mär 2009
    Zunächst einmal würde ich nur einen Threadpool instanziieren, nicht einen für jeden Socket. Dazu solltest du dann auch den Threadpool etwas verändern, sodass du nicht mehr ein OnWork-Ereignis hast, sondern einfach als Job einen Methodenzeiger übergibst (evtl. mit einem weitern Kontext-Parameter), der dann ausgeführt wird. Mit dem zusätzlichen Parameter nutzt du dann auch die 12 Byte voll aus.
    ...
  • Forum: Sonstige Fragen zu Delphi

    Re: Selbstgebauter Threadpool funktioniert nicht

      Delphi
      by Apollonius, 11. Mär 2009
    IO Completion Ports sind Warteschlangen, genau. Der letzte Parameter steuert genau das spezielle Scheduling, was ich weiter oben bereits erläutert habe:

    Ich denke, dass du für den letzten Parameter Null einsetzen solltest, sodass die Anzahl der laufenden Threads gleich der Anzahl der CPUs ist.
    Könntest du dein Problem etwas genauer erläutern?
  • Forum: Sonstige Fragen zu Delphi

    Re: Selbstgebauter Threadpool funktioniert nicht

      Delphi
      by Apollonius, 6. Mär 2009
    Hör doch bitte mit dem Polling auf. Setze in GetQueuedCompletionStatus INFINITE als letzten Parameter und lass das Sleep(1) weg. Sonst verbrätst du vollkommen unnötig CPU-Zeit. Dann musst du allerdings eine spezielle Stopp-Nachricht einführen, wofür du eines der ungenutzten Informations-Felder verwenden kannst. Ferner steht auch dwNumberOfBytesTransferred zu deiner freien Verfügung, du musst also...
  • Forum: Sonstige Fragen zu Delphi

    Re: Selbstgebauter Threadpool funktioniert nicht

      Delphi
      by Apollonius, 5. Mär 2009
    Eigentlich sind diese dafür gedacht, bei asynchronem IO Nachrichten über die Fertigstellung von Operationen zu bekommen. Du kannst aber auch manuell Nachrichten schicken. Die Benutzung ist simpel: Mit CreateIOCompletionPort einen Port erstellen, mit GetQueuedCompletionStatus in den Threadpool-Threads auf Nachrichten warten und von außen mit PostQueuedCompletionStatus Aufträge abschicken. Die...
  • Forum: Sonstige Fragen zu Delphi

    Re: Selbstgebauter Threadpool funktioniert nicht

      Delphi
      by Apollonius, 5. Mär 2009
    Was du gerade tust ist so, als ob jeder einzelne Mensch für die Toilette sein eigenes besetzt-Schild mitbringt und das dann privat auf besetzt stellt. Das kann nicht funktionieren, oder? Du brauchst für den ganzen Pool eine Critical Section. Außerdem ist dein Polling eine ganz schlechte Idee. Nimm eine Semaphore. Oder wenn du es ganz korrekt machen willst: Verwende IO Completion Ports, da ist das...


URL zu dieser Suchanfrage:

https://www.delphipraxis.net/dp_search.php?do=usersearch&search_username=Apollonius&search_exact_username=1&search_sortby=dateline&search_resulttype=post&search_matchmode=0&searchthreadid=130253
Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 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