AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi QueueUserWorkItem wie sieht es in Delphi aus?
Thema durchsuchen
Ansicht
Themen-Optionen

QueueUserWorkItem wie sieht es in Delphi aus?

Ein Thema von Luckie · begonnen am 17. Sep 2005 · letzter Beitrag vom 19. Sep 2005
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Re: QueueUserWorkItem wie sieht es in Delphi aus?

  Alt 17. Sep 2005, 18:51
@Basilikum: Das ändert nichts am Verhalten.
@Union: Ist aber in WinNT.h deklariert.

Aha, so gehts:
Delphi-Quellcode:
function Thread(p: Pointer): Integer; stdcall;
var
  ThreadID: Cardinal;
begin
  ThreadID := PThreadParams(p)^.ThreadID;
  Messagebox(0, PChar(IntToStr(ThreadID)), '', 0);
  Dispose(p);
  result := 0;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  ThreadParams: PThreadParams;
begin
  New(ThreadParams);
  ThreadParams.ThreadID := i;
  if QueueUserWorkItem(@Thread, ThreadParams, WT_EXECUTELONGFUNCTION) = 0 then
    ShowMessage(SysErrorMessage(GetLastError));
  Inc(i);
end;
stdcall und WT_EXECUTELONGFUNCTION zusammen erzeugen jedes mal einen neuen Thread.

Aber hilft mir das bei folgendem Szenario: Ich habe einen Server zum dem verbinden sich Clients. Es sollen maximal fünf Client-Threads laufen. das heißt, wenn fünf Thread schon existieren, soll es keinen neuen mehr geben, sondern der sechste Cliuent soll sich erst verbinden können, wenn einer der ersten fünf Clients sich wieder verabschiedet hat. Wenn sich das mit QueueUserWorkItem machen läßt, wie löst man das problem am besten?

Laut PSDK soll das ja möglcih sein:
Zitat:
There are many applications that create threads that spend a great deal of time in the sleeping state waiting for an event to occur. Other threads may enter a sleeping state only to be awakened periodically to poll for a change or update status information. Thread pooling enables you to use threads more efficiently by providing your application with a pool of worker threads that are managed by the system. At least one thread monitors the status of all wait operations queued to the thread pool. When a wait operation has completed, a worker thread from the thread pool executes the corresponding callback function.
Ich erzeuge als gleich fünf Threads und wenn ein Client kommt wird ein Thread aus dem ThreadPool genommen, der ihn bedient. Fällt jemanden dazu eine kleine Demo Anwendung ein?
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 07: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 by Thomas Breitkreuz